home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / graphic / rtnews.zip / RTNEWS5 < prev    next >
Text File  |  1992-09-13  |  95KB  |  2,198 lines

  1.  _ __                 ______                         _ __
  2. ' )  )                  /                           ' )  )
  3.  /--' __.  __  ,     --/ __  __.  _. o ____  _,      /  / _  , , , _
  4. /  \_(_/|_/ (_/_    (_/ / (_(_/|_(__<_/ / <_(_)_    /  (_</_(_(_/_/_)_
  5.              /                               /|
  6.             '                               |/
  7.  
  8.             "Light Makes Right"
  9.  
  10.              October 3, 1988
  11.  
  12. Compiled by Eric Haines, 3D/Eye Inc, ...!hplabs!hpfcla!hpfcrs!eye!erich
  13. All contents are US copyright (c) 1988 by the individual authors
  14.  
  15. Contents:
  16.     Intro
  17.     New Addresses and People
  18.     Bitmap Stuff, Jeff Goldsmith
  19.     More Comments on Kay/Kajiya
  20.     Questions and Answers (for want of a better name)
  21.     More on MTV's Public Domain Ray Tracer (features, bug fixes, etc)
  22.     NFF File Format, by Eric Haines
  23.  
  24. -----------------------------------------------------------------------------
  25.  
  26. Intro
  27.  
  28.     IMPORTANT:  Around October 16th I'm losing the `saponara' account at
  29.     Cornell.  So, in case you haven't heeded my earlier warnings, this is
  30.     truly the one!  Please write to me at:
  31.  
  32.     hpfcla!hpfcrs!eye!erich@hplabs.hp.com
  33.  
  34.     If you have never tried to write me at this address, you should try now
  35.     (submit something for the News while you're at it...).
  36.  
  37.     This issue is something of a queue clearer for me: a lot has been posted
  38.     on USENET concerning Mark VandeWettering's public domain ray tracer.  I
  39.     include all of this and more at the end.  If you're not interested, I hope
  40.     you can wade through it all until the end, as I would appreciate comments
  41.     on the "neutral file format" I use in the SPD package.
  42.  
  43. -------------------------------------------------------------------------------
  44.  
  45. New Addresses and People
  46.  
  47.     Remember that you can ask me any time for the latest version of the RT News
  48. mailing list.
  49.  
  50. Andrew Glassner has settled down and bought some bookshelves, and is at:
  51.  
  52. # Andrew Glassner        Andrew Glassner
  53. # Xerox PARC            690 Sharon Park Drive
  54. # 3333 Coyote Hill Road        Apt. #17
  55. # Palo Alto, CA  94304        Menlo Park, CA  94025
  56. # (415) 494 - 4467        (415) 854 - 4285
  57. alias    andrew_glassner    glassner@xerox.com
  58.  
  59. For those of you who receive only the email version of the Ray Tracing News:
  60. you should contact Andrew, as he is the editor of the hardcopy version of
  61. the RT News.  The hardcopy contains many articles which do not appear in the
  62. email version, so be sure to get both.
  63.  
  64. --------
  65.  
  66. # K.R.Subramanian
  67. # The University of Texas at Austin
  68. # Dept. of Computer Sciences 
  69. # Taylor Hall 2.124
  70. # Austin, Tx-78712. 
  71.  
  72. alias  krs  subramn@cs.utexas.edu (ARPA)
  73.  or
  74. alias  krs  {uunet...}!cs.utexas.edu!subramn (UUCP).
  75.  
  76. Interests in Ray Tracing:
  77.  
  78.     Use of hierarchical search structures for efficient ray tracing,
  79. investigating better space partitioning techniques, trying to apply
  80. ray tracing to practical applications.
  81.  
  82.     Currently a PhD student in Computer Sciences at The University of 
  83. Texas at Austin.
  84.  
  85. One suggestion on the RT round table: We must have a portion of time 
  86. where we can talk to other RT people on a more personal basis. At least,
  87. I find it easier to talk to people.
  88.  
  89. On the RT news: I would like to see practical applications of ray tracing
  90. described here. What applications really require mirror reflections,
  91. refraction etc. Havent seen applications where ray tracing was the way
  92. to go.
  93.  
  94. --------
  95.  
  96. From: mcvax!ecn-nlerf.com!jack@uunet.UU.NET (Jack van Wijk)
  97.  
  98. Via my old colleagues at Delft University of Technology I received
  99. a copy of your Ray Tracing News. I am delighted by this initiative, since
  100. it provides a fast, informal way to communicate with colleagues working
  101. in this sensational area. 
  102.  
  103. At the moment I do not do research with respect to ray tracing, but
  104. I expect that in the coming year the blood will creep again where it can't go
  105. (old Dutch proverb). The institute where I work now is very interested
  106. in high quality graphics, scientific data visualization and parallellism, 
  107. so I expect that ray tracing can be made a topic here.
  108.  
  109. I would be very happy if you could put me on the mailing list. Here is
  110. a short auto-biography:
  111.  
  112. # Jarke J. (Jack) van Wijk - Geometric modelling, intersection algorithms,
  113. #                            parallel algorithms.
  114. # Netherlands Energy Research Foundation, ECN
  115. # P.O. Box 1, 1755 ZG  Petten (NH), The Netherlands
  116. alias    jack_van_wijk    ecn!jack@mcvax.cwi.nl
  117.  
  118. I have done research on ray-tracing at Delft University of Technology
  119. from 1982 to 1986 together with Wim Bronsvoort and Erik Jansen. 
  120. My thesis is: "On new types of solid models and their visualization with 
  121. ray-tracing", Delft University Press, 1986, which title summarizes my
  122. main interests. I have developed intersection algorithms for sweep-defined 
  123. objects (translational, rotational, sphere), and blending. Also research was
  124. done on curved surfaces, modelling languages and on improving the efficiency.
  125. Currently I am interested in intersection algorithms, efficiency, and
  126. parallel algorithms, and the use of ray tracing for Scientific Data 
  127. Visualization.
  128.  
  129. --------
  130.  
  131. Linda Roy's mail address:
  132.  
  133. # Linda Roy - all aspects of ray tracing especially efficiency
  134. # Silicon Graphics Inc.
  135. # 2011 Shoreline Blvd.
  136. # Mountain View, California 94039-7311
  137. # 415-962-3684
  138.  
  139. --------
  140.  
  141. Mark VW's mail address:
  142.  
  143. # Mark VandeWettering
  144. # c/o Computer and Information Sciences Dept.
  145. # University of Oregon
  146. # Eugene, OR 97403
  147.  
  148. -------------------------------------------------------------------------------
  149.  
  150. Bitmap Stuff, by Jeff Goldsmith
  151.  
  152.    [The following is for VMS people.  UNIX/C people should contact anyone at
  153. the University of Utah for information on their "Utah RLE Toolkit", which has
  154. all kinds of bitmap manipulation tools using pipes (in the style of Tom Duff).
  155. It's a nice toolkit (and includes the famous mandrill picture), and can be
  156. had by ftp from cs.utah.edu. - EAH]
  157.  
  158.    I have some bitmap utilities that I can put somewhere
  159. if there's interest.  They aren't intended to be anywhere
  160. nearly so portable as poskbitmaps, but they seem to have more tools. 
  161. I'm pretty curious what a good total set of tools would be; 
  162. maybe this can spark such a list.  Mine work only under VMS
  163. (does direct mapping to files--FAST) and use a bizarre format
  164. that is really just 1024 bytes of header followed by pixels.
  165. Here's a list of the tools:
  166.     Cutout:        Cuts a rectangle out
  167.     Dissolve:    Fades from one picture to another
  168.     Gamma:        Channel-independent contract change
  169.     Filter:        2x2 boxfilter
  170.     Lumin:        Color to Black and White via luminosity
  171.     Pastein:    Pastes a rectangle into another picture
  172.     Poke:        Mess with header data, e.g. offsets
  173.     Resam:        Change from 1-1 to 5-4 aspect ratio fast
  174.     Reverse:    Inverse video
  175.     Switch:        Swap red, green, blue channels around
  176.     Thresh:        Sets pixel<theshhold = 0.  Ramps rest
  177.     Xzoom:        Horizontal stretch.  Floating point factor
  178.     Zoom:        Floating point rescale.
  179. None of these are super-robust, but they are pretty fast.  The
  180. slowest is zoom and it runs in 1-2 minutes on a VAX 780.  On a
  181. newer machine, they'd be ok-fast.  
  182.  
  183. By the way, I've used each of them in animations, so the transformations
  184. are smooth.  Also, they are clearly useful.
  185.  
  186. -------------------------------------------------------------------------------
  187.  
  188. More Comments on Kay/Kajiya
  189.  
  190. From Jeff Goldsmith:
  191.  
  192. I do a quick check on the children to determine the key for the sort.
  193. I just use the largest component of the current ray as the direction
  194. along which to check and then just use the minimum (or maximum) extent
  195. of the bounding volume to generate a key.  Tim Kay says that that is
  196. not what they meant in the paper, but it's close enough and seems to
  197. work.  However, before the sorter ever gets to deal with a new bounding
  198. volume, I check to see if the leading edge of the bounding volume is
  199. beyond the current hit.  John Salmon added the trick that all illumination
  200. rays get a pseudo-hit at the light source position, so that automatically
  201. rejects all objects that cannot cast shadows.  (Of course, it deals with
  202. objects on the other side of the ray origin, too.)  I also, of course,
  203. don't sort the illumination rays' bounding volumes.
  204.  
  205. A further note: I did not find that the sorting cost was trivial; in 
  206. fact, it made up for most of the time saved in avoiding bounding volume
  207. checking.  It was more useful before we added all the other hacks to
  208. avoid things, though. 
  209.  
  210. Good references for heap sort algorithms are:
  211.     Standish, _Data Structure Techniques_     and
  212.         Knuth, of course.
  213.  
  214. Heap sort is the right algorithm, I think, because a total order
  215. is not needed on all the objects.  We need to pull off one object
  216. (bounding volume) at a time from the head of the list, and once
  217. we find a hit, we discard the rest of the list.  There's no point
  218. in sorting stuff that we will never check.
  219.  
  220. ----
  221.  
  222. I ended up tossing the heap sort version completely, in order to
  223. save memory space.  (Odd, it's been a long time since I've had to
  224. worry about code size.)  I think that I could gain all of their
  225. savings and then some by just postprocessing the tree so that the
  226. left child is closer to the eye than the right child.  Most non-
  227. illumination rays go in the general direction of "away from the eye,"
  228. so that would help them.  I-rays don't need sorting anyway.  Alternatively,
  229. as you suggested, putting the bigger boxes (whatever) on the left would
  230. work, too, maybe.  If I ever have time to futz with it, I'd like to
  231. try some of that.
  232.  
  233. ----
  234.  
  235. My reply to Jeff:
  236.  
  237.     Sorting on distance to eye sounds good - in fact, I was going to
  238. try it, but I use the item buffer and so the eye rays are mostly taken care
  239. of.  If anything, sorting with objects farther away might help me:  the
  240. reflection rays, etc etc will probably be in a direction away from the eye
  241. rays!  Oh, another good post-process might be to sort each list of sons on
  242. the difficulty of sorting (or did I mention this already?) - try the sphere
  243. before the spline.
  244.  
  245. -------------------------------------------------------------------------------
  246.  
  247. Questions and Answers (for want of a better name)
  248.  
  249. Wood Texture Request Filled:
  250.  
  251. Jeff Goldsmith's request for wood texture bitmaps was generously filled by
  252. Rod Bogart, who made four bitmaps (wood.img[1-4]) available for ftp at
  253. cs.utah.edu.  These are still there (I just grabbed them), though I don't
  254. know how long they'll remain available.  These are scanned images from an
  255. artist's book of textures.
  256.  
  257. --------
  258.  
  259. Efficiency Question
  260.  
  261. From Mark VandeWettering:
  262.  
  263. How can we efficiently manage the intersect lists that get passed
  264. between the various procedures.  Heckbert statically allocates arrays
  265. within the stack frames of various procedures, which seems a little odd,
  266. because you never really know how much space to allocate.  Also, merging
  267. them using Roth's CSG scheme requires alot of copying: can this be
  268. avoided?
  269.  
  270. --------
  271.  
  272. From Jack Ritter:
  273.  
  274. A simple method for fast ray tracing has occurred to me,
  275. and I haven't seen it in the literature, particularly
  276. Procedural Elements for Computer Graphics.
  277. It is a way to trivially reject rays that don't
  278. intersect with objects. It works for primary
  279. rays only (from the eye).  It is:
  280.  
  281. Do once for each object: 
  282.    compute its minimum 3D bounding box. Project
  283.    the box's 8 corners unto pixel space. Surround the
  284.    cluster of 8 pixel points with a minimum 2D bounding box.
  285.    (a tighter bounding volume could be used).
  286.  
  287. To test a ray against an object, check if the pixel
  288. through which the ray goes is in the object's 2D box.
  289. If not, reject it.
  290.  
  291. It sure beats line-sphere minimum distance calculation.
  292.  
  293. Surely this has been tried, hasn't it?
  294.  
  295. ----
  296.  
  297. An Answer, by Eric Haines:
  298.  
  299. It's true, this really hasn't appeared in the literature, per se.  However, it
  300. has been done.
  301.  
  302. The idea of the item buffer has been presented by Hank Weghorst, Gary Hooper,
  303. and Donald P. Greenberg in "Improved Computational Methods for Ray Tracing",
  304. ACM TOG, Vol. 3, No. 1, January 1984, pages 52-69.  Here they cast polygons
  305. onto a z-buffer, storing the ID of the closest item for each pixel.  During
  306. ray tracing the z-buffer is then sampled for which items are probably hit
  307. by the eye ray.  These are checked, and if one is hit you're done.  If none
  308. are hit then a standard ray trace is performed.  Incidentally, this is the
  309. method Wavefront uses for eye rays when they perform ray tracing.  It's
  310. fairly useful, as Cornell's research found that there are usually more eye
  311. rays than reflection and refraction rays combined.  There's still all those
  312. shadow rays, which was why I created the light buffer (but that's another
  313. story...see IEEE CG&A September 1986 if you're interested).
  314.  
  315. In the paper the authors do not describe how to insert non-polygonal objects
  316. into the buffer.  In Weghorst's (and I assume Hooper's, too) thesis he
  317. describes the process, which is essentially casting the bounding box onto
  318. the screen and getting its x and y extents, then shooting rays within this
  319. extent at the object as a pre-process.  This is the idea you outlined.
  320. However, theirs avoids all testing of the extents by doing the work as
  321. a per object (instead of per ray) preprocess.  A per object basis means they
  322. don't have to test extents: all they do is loop through the extent itself and
  323. shoot rays at the object for each pixel.
  324.  
  325. --------
  326.  
  327. Efficient Polygon Intersection Question, from Mark VandeWettering
  328.  
  329. Another problem I have been considering arose from a profile of my
  330. raytracer when run on the "gears" database.  A large amount of time 
  331. (~40%) was spent in the polygon intersection code, which is greater than
  332. other scenes which used polygons.  The reason:  the polygon intersection
  333. routine which you described in the Siggraph Course Notes is linear in
  334. the number of sides of the object.  For the case of the gear, the number
  335. of sides is 144, which is a very large number.
  336.  
  337. Perhaps a better way of trying to intersect polygons is to decompose the
  338. complex polygons into triangles, and then arrange them in your favorite
  339. hierarchy scheme.  The simplest way would be to subdivide prior to the
  340. raytracing in a preprocessing step.  Several very quick algorithms exist
  341. for intersection with triangles, and I think that this may be a better
  342. way to implement polygon intersection. 
  343.  
  344. "Back of the envelope" calculations:
  345.  
  346. Haines' method of intersection:        O(n) to intersect polygon
  347. Triangular decomposition:        O(1) to intersect triangle
  348.                     * number of triangles searched
  349.                       inside your hierarchy scheme.
  350.  
  351. Assuming a good hierarchy, you can expect O(logn) triangles to be
  352. searched.  The problem is finding the constants involved in this.  I do
  353. suspect that this method may in fact be superior, because in the ground
  354. case (intersect a triangle), the two methods are equivalent (actually
  355. since the code may be streamlined for triangles, the second is probably
  356. better), and I expect that as the number of sides grows, the second will
  357. get better relative to the first.
  358.  
  359. I am torn between trying to formally analyze the run-time, and just
  360. going ahead and implementing the thing, and gaining performance
  361. information from that.  Perhaps I will have some figures for you about
  362. my experience soon.
  363.  
  364. I would like to hear from anyone on the RT-News who has
  365. information on ray tracing superquadrics.  I am especially interested in
  366. the numerical methods used to solve intersections, but any information
  367. would be useful.  
  368.  
  369. [as I recall Preparata talks about preprocessing polygons into trapezoids
  370. in his book _Computational Geometry_, leading to many fewer edge which
  371. need testing (each trapezoid has but two sides which can intersect, as the
  372. test ray is parallel to the other two edges).  Any other solutions, anyone?
  373. -- EAH]
  374.  
  375. --------
  376.  
  377. Bug in Paul Heckbert's Ray Tracer?
  378.  
  379. From Mark VandeWettering:
  380.  
  381. As I might have mentioned before, I modelled my raytracer after the one
  382. described in Heckbert's article "Writing a RayTracer".  I have noticed
  383. some ambiguities/anomolies/bugs(?) that might be interesting to examine.
  384.  
  385. In Heckbert's code, there is some "weirdness" going on in the Shade
  386. procedure. The part of the "Shade" procedure which handles 
  387. tranparency is something has a comment like:
  388.  
  389. /* hit[0].medium and hit.[1].medium are entering and exiting media */
  390.  
  391. The transmission direction is then calculated using the index of
  392. refraction of the two media.
  393.  
  394. But hit[0].medium should be the medium that the ray originates in, not
  395. the medium of the object actually hit.  Therefore, the index of
  396. refractions are incorrect and the Transmission direction also is
  397. incorrect.
  398.  
  399. Perhaps Paul could comment on this.  What seems to be correct is to keep
  400. hit[0] reserved to contain the type of material that the ray originates
  401. in, and hit[1] be the first hit along this ray?  Was this what was
  402. intended?
  403.  
  404. --------
  405.  
  406. A Tidbit from USENET
  407.  
  408. From: Ali T. Ozer
  409.  
  410. In article <10207@s.ms.uky.edu> sean@ms.uky.edu (Sean Casey) writes:
  411. >Oh yeah, I hear that some of the commercial Amiga ray tracing software is
  412. >being ported to the Mac II. These products have been around for a while, so
  413. >it's a good chance for Mac users to get their hands on some already-evolved
  414. >ray-tracing software.
  415.  
  416. For a lot higher price, though... I read that the Mac version of 
  417. Byte by Byte's Sculpt 3D and Animate 3D packages will start from $500.
  418.  
  419. Ali Ozer, aozer@NeXT.com
  420.  
  421. -------------------------------------------------------------------------------
  422.  
  423. More on MTV's Public Domain Ray Tracer (features, bug fixes, etc)
  424.  
  425. --------
  426.  
  427. Raytrace to Impress/Postscript Converter, by David Koblas
  428.  
  429. Contained is a shar for converting MRGB pictures to either
  430. impress or postscript depending on your needs (black and white).
  431.  
  432. {I'm looking for versatec plotter routines, if you have some I'd be interested}
  433.  
  434. [Ed. note: there is also a patch for this program posted to USENET.]
  435.  
  436. [as usual, the code is deleted for space.  Check USENET or contact David for
  437. the program. - EAH]
  438.  
  439. name : David Koblas         place: MIPS Computers Systems                
  440. phone: 408-991-0287         uucp : {ames,decwrl,pyramid,wyse}!mips!koblas 
  441.  
  442. --------
  443.  
  444. Raytrace to X Image converter, by Paul Andrews
  445.  
  446. Here's a somewhat primitive program to display one of Marks raytraced pic's
  447. on an X display. There's no makefile, but then there's only one source file.
  448.  
  449. paul@torch.UUCP (Paul Andrews)
  450.  
  451. [again, code deleted for space.  Check USENET or write Paul]
  452.  
  453. --------
  454.  
  455. Better Shading Model for Raytracer, by David Koblas
  456.  
  457. A better shading model for the MTV raytracer [I probably should have
  458. posted this a while back, while I was sure it all worked]
  459.  
  460. The two big changes this has are a better shading model, including doing 
  461. something diffrent with diffuse reflection.  You can specify the color of 
  462. a light, and surfaces have an ambiant and absorbance values [default: 
  463. no ambiant and no absorbtion].  The "shine" value is now in the range 
  464. from 0.0 -> 1.0 instead of 0 -> infinity.  On balls I ran a sed script 
  465. like this: '/^f/s/ 35 / 0.2 /' and got close the the same results.  
  466. Also all componants of a surface can be specified with r,g,b values.
  467.  
  468. Give it a try, and if you have any bugs/problems/sugestions, let me
  469. know and I'll give them a try/fix.
  470.  
  471. name : David Koblas         place: MIPS Computers Systems                
  472. phone: 408-991-0287         uucp : {ames,decwrl,pyramid,wyse}!mips!koblas 
  473.  
  474. [code deleted for space: check USENET or write David for the new model]
  475.  
  476. --------
  477.  
  478. From Irv Moy:
  479.  
  480.     I have Mark VandeWettering's raytracer running on a Sun 3/260
  481. and Version 2.4 of Eric Haines' SPD (I took the SPD that Mark posted and
  482. applied the patch that Eric posted to get Ver. 2.4).  I display the output
  483. of the raytracer on a Targa 32; I had to add an extra byte in the output
  484. file for the Targa's alpha channel.  The output of 'balls.c' looks great;
  485. I now have my very own "sphereflake"!!!
  486.     I tried 'gears' at a size factor of 4 and the resulting output is
  487. quite dark.  The background is a nice UNC blue but the gear surfaces are
  488. very dark and so is the reflecting polygon underneath the gears.
  489. Has anyone else tried to raytrace 'gears' with Mark's program yet???
  490. Enquiring minds want to know.....(BTW, if you look closely at 'sphereflake',
  491. you can see Elvis (recursively, of course)).
  492.  
  493.                 Irv Moy
  494.                 UUCP: ..!chinet!musashi
  495.                 Internet: musashi@chinet.uucp
  496.  
  497. --------
  498.  
  499. From Ron Hitchens:
  500.  
  501.    This may have some bearing on the problem:
  502.  
  503. vixen% ray -i gears.nff -o gears.pic -t
  504. ray: (9345 prims, 5 lights)
  505. ray: inputfile = "gears.nff"
  506. ray: resolution 512 512
  507. ray: after adding bounding volumes, 10516 prims
  508.                     ^^^^^
  509.  
  510.    From defs.h:
  511.  
  512. #define MAXPRIMS        (10000)
  513.              ^^^^^
  514.  
  515.    I ran gears.nff last night and got the same results.  I bumped MAXPRIMS to
  516. 11000 and ran it again, seemed to work fine.  I only ran a 128x128 version,
  517. the resolution was so low that most of the gears looked like fuzzy blobs, but
  518. it seemed to be properly lighted and plenty colorful.  I have a 512x512 run
  519. going now, should be finished in about 12 hours (I love my Sun 3/60FC, but it
  520. sure would be handy to have a Cray now and then).
  521.  
  522. > (BTW, if you look closely at 'sphereflake',
  523. > you can see Elvis (recursively, of course)).
  524.  
  525.    Naw, that's the spirit of Tom Snyder, Elvis is way too busy channelling
  526. through an unemployed truck driver in Muncie, Indiana.
  527.  
  528.    To Mark VandeWettering: Hey, thanks for the ray tracer.  I don't suppose
  529. you could send me a disk drive to store all these picture files on could you?
  530.  
  531. Ron Hitchens        ronbo@vixen.uucp    hitchens@cs.utexas.edu
  532.  
  533. --------
  534.  
  535. From: Steve Holzworth
  536.  
  537. There is a bug in the screen.c routine of Mark's raytracer.
  538. Specifically, everywhere he does a malloc, the code is of the form:
  539.  
  540. foo = (Pixel *) malloc (xres * sizeof (Pixel)) + 1;
  541.  
  542. The actual intent is to allocate xres+1 Pixels, thusly:
  543.  
  544. foo = (Pixel *) malloc ((xres + 1) * sizeof (Pixel));
  545.  
  546. There are three occurences of the former in the code; they should be changed
  547. similarly to the later.  (Note: I never ran over this bug until I tried
  548. to run a 1024x1024 image.  It worked fine on 512x512 or less images.)
  549.  
  550. Other than that, its a good raytracer.  Congrats, Mark!  I'm working on
  551. a better lighting model and a better camera model.  I'll send them on 
  552. when (if) I finish them.
  553.  
  554.                         Steve Holzworth
  555.                         rti!tachyon!sch
  556.  
  557. --------
  558.  
  559. Teapot Database for Ray Tracing, by Ron Hitchens
  560.  
  561. Subject: Ray traced teapot
  562.  
  563.    Below is a modification of a program that Dean S. Jones posted a few weeks
  564. ago that draws the well known teapot in wire frame using SunCore.  I changed
  565. it so that it would use the same data to produce an NFF file that Mark
  566. VandeWettering's ray tracer can use.  The result looks surprisingly good. 
  567. Using the default step value of 6 is satisfactory, 12 looks very nice.
  568.  
  569.    I'd like to know what's causing the little specks on the spout and the
  570. handle.  I don't know if it's a problem with how this guy generates the
  571. NFF file, or some glitch in Mark's ray tracer.  I don't have the time to
  572. investigate.
  573.  
  574.    The original program that Dean posted was Sun specific, since it used
  575. SunCore.  This one is not Sun-specific, all it does is some computation
  576. and spit out some text data, so it should run most anywhere.  You'll probably
  577. need to remove the -f68881 from the makefile spec if you compile it on a
  578. non-Sun system though.
  579.  
  580.    Enjoy.
  581.  
  582. Ron Hitchens        ronbo@vixen.uucp    hitchens@cs.utexas.edu
  583.  
  584. [code deleted for space.  Check USENET or write Ron Hitchens for the code]
  585.  
  586. --------
  587.  
  588. From Mark VandeWettering (to me):
  589.  
  590. Your final comments regarding Kay/Kajiya BVs were basically 
  591. in line with the thinking that I have done, and with the current state
  592. of my raytracer.  I now provide cutoffs for shadow testing, and cull 
  593. objects immediately if they are beyond the maximum distance that we need
  594. to look.
  595.  
  596. This also allows me to implement some of the "shadow caching" and other
  597. optimizations suggested by you in the March 28, 1988 RT-News.   Most of
  598. these were trivial to implement, and will be incorporated in a
  599. better/stronger/faster version of my raytracer.  
  600.  
  601. --
  602.  
  603. Gosh, I just can't keep quiet can I?  I just wanted you to know that a 
  604. new and improved version of my raytracer is available for anonymous ftp.
  605. It employs some of the stuff regarding Kay/Kajiya bounding volumes, and
  606. shadow caches for an improvement in speed as well.  (Roughly 30%
  607. improvement).  I can now do the sphereflake is less than 5 hours on a
  608. Sun 3 w/68881 coprocessor.
  609.  
  610. For the future, I am thinking of CSG, antialiasing, and Goldsmith and
  611. Salmon style hierarchy generation.  Things that have been put off, but I
  612. would like to include would be more complex primitives, but I just can't
  613. deal with numerical analysis at the moment :-)
  614.  
  615. Soon it will be back to the world of functional programming and my
  616. thesis so I better get this all done.  *sigh*
  617.  
  618. --
  619.  
  620. New Ideas: an ObjectDesc -> NFF compiler
  621.  
  622. One possible project that I have thought of doing is an Object to NFF
  623. compiler.  The compiler could be a procedural language which could be
  624. used to define hierarchical objects, with facilities for rotation,
  625. translation and scaling.  The output would be an NFF file for the scene.
  626.  
  627. For instance, we might have primitive object types  CUBE, SPHERE, POLYGON
  628. and CONE.  Each of these might represent the canonical "unit" primitive.
  629. We could then build new objects out of these primitives.
  630.  
  631. A hypothetical example program to create a checkerboard might be:
  632.  
  633. #
  634. # checkboard.obj
  635. define object check {
  636.     polygon (0.0 0.0 0.0)
  637.             (1.0 0.0 0.0)
  638.             (1.0 1.0 0.0)
  639.             (0.0 1.0 0.0) ;
  640.     }
  641. #
  642. # Check4 contains 4 squares...
  643. #
  644. define object check4 {
  645.     check, color white ;
  646.     check, translate(1.0, 0.0, 0.0), color black ;
  647.     check, translate(0.0, 1.0, 0.0), color white ;
  648.     check, translate(1.0, 1.0, 0.0), color black ;
  649.     }
  650. #
  651. # Board 4 is 1/4 of a checkerboard...
  652. #
  653. define object board4 {
  654.     check4 ;
  655.     check4, translate(2.0, 0.0, 0.0) ;
  656.     check4, translate(0.0, 2.0, 0.0) ;
  657.     check4, translate(2.0, 2.0, 0.0) ;
  658.     }
  659.  
  660. #
  661. # Board is a full sized checkerboard...
  662. #
  663. define object board {
  664.     board4 ;
  665.     board4, translate(4.0, 0.0, 0.0) ;
  666.     board4, translate(0.0, 4.0, 0.0) ;
  667.     board4, translate(4.0, 4.0, 0.0) ;
  668.     }
  669.  
  670. #
  671. # the scene to be rendered...
  672. #
  673.  
  674. define scene {
  675.     board ;
  676.     }
  677.  
  678. --
  679.  
  680. I would also like it to support CSG, and maybe even procedural (looping
  681. constructs).  I don't know if I will get up enough steam to implement
  682. this, but it would make scenes easier to specify for the average user.
  683.  
  684. Ideally, such a language would be interesting to use for specifying
  685. motion as well, although I have no real ideas about the ideal way to
  686. specify (or implement) this.
  687.  
  688. -------------------------------------------------------------------------------
  689.  
  690. Neutral File Format (NFF), by Eric Haines
  691.  
  692. [This is a description of the format used in the SPD package.  Any comments
  693. on how to expand this format are appreciated.  Some extensions seem obvious
  694. to me (e.g. adding directional lights, circles, and tori), but I want to take
  695. my time, gather opinions, and get it more-or-less right the first time. -EAH]
  696.  
  697. Draft document #1, 10/3/88
  698.  
  699. The NFF (Neutral File Format) is designed as a minimal scene description
  700. language.  The language was designed in order to test various rendering
  701. algorithms and efficiency schemes.  It is meant to describe the geometry and
  702. basic surface characteristics of objects, the placement of lights, and the
  703. viewing frustum for the eye.  Some additional information is provided for
  704. esthetic reasons (such as the color of the objects, which is not strictly
  705. necessary for testing rendering algorithms).
  706.  
  707. Future enhancements include:  circle and torus objects, spline surfaces
  708. with trimming curves, directional lights, characteristics for positional
  709. lights, CSG descriptions, and probably more by the time you read this.
  710. Comments, suggestions, and criticisms are all welcome.
  711.  
  712. At present the NFF file format is used in conjunction with the SPD (Standard
  713. Procedural Database) software, a package designed to create a variety of
  714. databases for testing rendering schemes.  The SPD package is available
  715. from Netlib and via ftp from drizzle.cs.uoregon.edu.  For more information
  716. about SPD see "A Proposal for Standard Graphics Environments," IEEE Computer
  717. Graphics and Applications, vol. 7, no. 11, November 1987, pp. 3-5.
  718.  
  719. By providing a minimal interface, NFF is meant to act as a simple format to
  720. allow the programmer to quickly write filters to move from NFF to the
  721. local file format.  Presently the following entities are supported:
  722.      A simple perspective frustum
  723.      A positional (vs. directional) light source description
  724.      A background color description
  725.      A surface properties description
  726.      Polygon, polygonal patch, cylinder/cone, and sphere descriptions
  727.  
  728. Files are output as lines of text.  For each entity, the first line
  729. defines its type.  The rest of the first line and possibly other lines
  730. contain further information about the entity.  Entities include:
  731.  
  732. "v"  - viewing vectors and angles
  733. "l"  - positional light location
  734. "b"  - background color
  735. "f"  - object material properties
  736. "c"  - cone or cylinder primitive
  737. "s"  - sphere primitive
  738. "p"  - polygon primitive
  739. "pp" - polygonal patch primitive
  740.  
  741.  
  742. These are explained in depth below:
  743.  
  744. Viewpoint location.  Description:
  745.     "v"
  746.     "from" Fx Fy Fz
  747.     "at" Ax Ay Az
  748.     "up" Ux Uy Uz
  749.     "angle" angle
  750.     "hither" hither
  751.     "resolution" xres yres
  752.  
  753. Format:
  754.  
  755.     v
  756.     from %g %g %g
  757.     at %g %g %g
  758.     up %g %g %g
  759.     angle %g
  760.     hither %g
  761.     resolution %d %d
  762.  
  763. The parameters are:
  764.  
  765.     From:  the eye location in XYZ.
  766.     At:    a position to be at the center of the image, in XYZ world
  767.        coordinates.  A.k.a. "lookat".
  768.     Up:    a vector defining which direction is up, as an XYZ vector.
  769.     Angle: in degrees, defined as from the center of top pixel row to
  770.        bottom pixel row and left column to right column.
  771.     Resolution: in pixels, in x and in y.
  772.  
  773.   Note that no assumptions are made about normalizing the data (e.g. the
  774.   from-at distance does not have to be 1).  Also, vectors are not
  775.   required to be perpendicular to each other.
  776.  
  777.   For all databases some viewing parameters are always the same:
  778.     Yon is "at infinity."
  779.     Aspect ratio is 1.0.
  780.  
  781.   A view entity must be defined before any objects are defined (this
  782.   requirement is so that NFF files can be used by hidden surface machines).
  783.  
  784. --------
  785.  
  786. Positional light.  A light is defined by XYZ position.  Description:
  787.     "b" X Y Z
  788.  
  789. Format:
  790.     l %g %g %g
  791.  
  792.     All light entities must be defined before any objects are defined (this
  793.     requirement is so that NFF files can be used by hidden surface machines).
  794.     Lights have a non-zero intensity of no particular value [this definition
  795.     may change soon, with the addition of an intensity and/or color].
  796.  
  797. --------
  798.  
  799. Background color.  A color is simply RGB with values between 0 and 1:
  800.     "b" R G B
  801.  
  802. Format:
  803.     b %g %g %g
  804.  
  805.     If no background color is set, assume RGB = {0,0,0}.
  806.  
  807. --------
  808.  
  809. Fill color and shading parameters.  Description:
  810.      "f" red green blue Kd Ks Shine T index_of_refraction
  811.  
  812. Format:
  813.     f %g %g %g %g %g %g %g %g
  814.  
  815.     RGB is in terms of 0.0 to 1.0.
  816.  
  817.     Kd is the diffuse component, Ks the specular, Shine is the Phong cosine
  818.     power for highlights, T is transmittance (fraction of light passed per
  819.     unit).  Usually, 0 <= Kd <= 1 and 0 <= Ks <= 1, though it is not required
  820.     that Kd + Ks == 1.  Note that transmitting objects ( T > 0 ) are considered
  821.     to have two sides for algorithms that need these (normally objects have
  822.     one side).
  823.   
  824.     The fill color is used to color the objects following it until a new color
  825.     is assigned.
  826.  
  827. --------
  828.  
  829. Objects:  all objects are considered one-sided, unless the second side is
  830. needed for transmittance calculations (e.g. you cannot throw out the second
  831. intersection of a transparent sphere in ray tracing).
  832.  
  833. Cylinder or cone.  A cylinder is defined as having a radius and an axis
  834.     defined by two points, which also define the top and bottom edge of the
  835.     cylinder.  A cone is defined similarly, the difference being that the apex
  836.     and base radii are different.  The apex radius is defined as being smaller
  837.     than the base radius.  Note that the surface exists without endcaps.  The
  838.     cone or cylinder description:
  839.  
  840.     "c"
  841.     base.x base.y base.z base_radius
  842.     apex.x apex.y apex.z apex_radius
  843.  
  844. Format:
  845.     c
  846.     %g %g %g %g
  847.     %g %g %g %g
  848.  
  849.     A negative value for both radii means that only the inside of the object is
  850.     visible (objects are normally considered one sided, with the outside
  851.     visible).  Note that the base and apex cannot be coincident for a cylinder
  852.     or cone.
  853.  
  854. --------
  855.  
  856. Sphere.  A sphere is defined by a radius and center position:
  857.     "s" center.x center.y center.z radius
  858.  
  859. Format:
  860.     s %g %g %g %g
  861.  
  862.     If the radius is negative, then only the sphere's inside is visible
  863.     (objects are normally considered one sided, with the outside visible).
  864.  
  865. --------
  866.  
  867. Polygon.  A polygon is defined by a set of vertices.  With these databases,
  868.     a polygon is defined to have all points coplanar.  A polygon has only
  869.     one side, with the order of the vertices being counterclockwise as you
  870.     face the polygon (right-handed coordinate system).  The first two edges
  871.     must form a non-zero convex angle, so that the normal and side visibility
  872.     can be determined.  Description:
  873.  
  874.     "p" total_vertices
  875.     vert1.x vert1.y vert1.z
  876.     [etc. for total_vertices vertices]
  877.  
  878. Format:
  879.     p %d
  880.     [ %g %g %g ] <-- for total_vertices vertices
  881.  
  882. --------
  883.  
  884. Polygonal patch.  A patch is defined by a set of vertices and their normals.
  885.     With these databases, a patch is defined to have all points coplanar.
  886.     A patch has only one side, with the order of the vertices being
  887.     counterclockwise as you face the patch (right-handed coordinate system).
  888.     The first two edges must form a non-zero convex angle, so that the normal
  889.     and side visibility can be determined.  Description:
  890.  
  891.     "pp" total_vertices
  892.     vert1.x vert1.y vert1.z norm1.x norm1.y norm1.z
  893.     [etc. for total_vertices vertices]
  894.  
  895. Format:
  896.     pp %d
  897.     [ %g %g %g %g %g %g ] <-- for total_vertices vertices
  898.  
  899. --------
  900.  
  901. Comment.  Description:
  902.     "#" [ string ]
  903.  
  904. Format:
  905.     # [ string ]
  906.  
  907.     As soon as a "#" character is detected, the rest of the line is considered
  908.     a comment.
  909.  
  910. -------------------------------------------------------------------------------
  911. END OF RTNEWS
  912.  _ __                 ______                         _ __
  913. ' )  )                  /                           ' )  )
  914.  /--' __.  __  ,     --/ __  __.  _. o ____  _,      /  / _  , , , _
  915. /  \_(_/|_/ (_/_    (_/ / (_(_/|_(__<_/ / <_(_)_    /  (_</_(_(_/_/_)_
  916.              /                               /|
  917.             '                               |/
  918.  
  919.             "Light Makes Right"
  920.  
  921.              November 4, 1988
  922.  
  923. Compiled by Eric Haines, 3D/Eye Inc, 410 E. Upland Rd, Ithaca, NY 14850
  924.     607-257-1381, hpfcla!hpfcrs!eye!erich@hplabs.hp.com
  925. All contents are US copyright (c) 1988 by the individual authors
  926.  
  927. Contents:
  928.     Intro, by Eric Haines
  929.     New People: David Rogers, Kelvin Thompson, A.T. Campbell III, Tim O'Connor
  930.     Ray/Triangle Intersection with Barycentric Coordinates, by Rod Bogart,
  931.     reply by Jeff Arenberg
  932.     Letter and Replies
  933.     Free On-Line Computer Graphics References, (Eugene Miya for) Baldev Singh
  934.     Latest Mailing List, Short Form, by Eric Haines
  935.  
  936. -----------------------------------------------------------------------------
  937.  
  938. Intro
  939. -----
  940.  
  941.     For a switch, there are no articles on MTV's ray tracer!  The major stuff
  942.     this time is Rod Bogart's triangle intersector, and the announcement of
  943.     Baldev Singh's computer graphics reference resource.  There are also many
  944.     letters and short articles, along with the usual cullings of USENET.
  945.     Enjoy.
  946.  
  947. -----------------------------------------------------------------------------
  948.  
  949. New People
  950. ----------
  951.  
  952. # Professor David F. Rogers
  953. # Aerospace Engineering Department
  954. # U.S. Naval Academy
  955. # Annapolis, MD 21402
  956. # USA
  957. # Tel: 301-267-3283/4/5
  958. # ARPANET: dfr@usna.mil
  959. # UUCP:    ~uunet!usna!dfr
  960. alias    david_rogers    dfr@cad.usna.mil
  961.  
  962.  
  963.  
  964. # Kelvin Thompson - hierarchy schemes, procedural objects, animation
  965. # The University of Texas at Austin
  966. # 4412 Ave A. #208
  967. # Austin, TX  78751-3622
  968. alias    kelvin_thompson    kelvin@cs.utexas.edu
  969.  
  970. I'm a PhD student in graphics at the University of Texas.  I received a BSEE
  971. from Rice University in 1983, and a Master's in EE from UT in 1984.  My
  972. doctoral project is on hierarchical, multi-scale databases for computer
  973. graphics, and I'm building a ray-tracer as part of my work on that project.
  974. I'm also interested in motion and animation.  I never plan on becoming
  975. President of the United States of America.
  976.  
  977. -- Kelvin Thompson, Lone Rider of the Apocalypse
  978.    kelvin@cs.utexas.edu  {...,uunet}!cs.utexas.edu!kelvin
  979.  
  980.  
  981.  
  982. # A. T. Campbell, III - shading models, animation
  983. # Department of Computer Sciences
  984. # University of Texas
  985. # Austin, Texas 78712
  986. # (512) 471-9708
  987. alias    at_campbell     atc@cs.utexas.EDU
  988.  
  989. I am in the PhD program in Computer Sciences at the University of Texas.  My
  990. research area is developing a more sophisticated illumination model than those
  991. currently in widespread use.  A modified form of distributed ray tracing is one
  992. of the methods I am considering to evaluate my model.
  993.  
  994. Animation is another of my interests.  I am putting myself through school by
  995. producing computer graphics animations for a small engineering company.
  996. Sometimes I am called upon to create special effects such as motion blur and
  997. atmospheric effects.  Based on what I heard at this year's ray tracing round
  998. table at SIGGRAPH, it looks as if ray tracing can solve most of my problems.
  999.  
  1000.  
  1001.  
  1002. # Tim O'Connor
  1003. # Staff, Cornell Program of Computer Graphics
  1004. # 120 Rand Hall
  1005. # Ithaca, NY 14853
  1006. alias    tim_oconnor    toc@wisdom.tn.cornell.edu
  1007.  
  1008. -------------------------------------------------------------------------------
  1009.  
  1010. Ray/Triangle Intersection with Barycentric Coordinates
  1011. ------------------------------------------------------
  1012. [sent to RT News and USENET]
  1013.  
  1014.     articles by Rod Bogart, Jeff Arenberg
  1015.  
  1016.  
  1017. From: hpfcla!bogart%gr@cs.utah.edu (Rod G. Bogart)
  1018.  
  1019. A while back, there was a posting concerning ray/triangle intersection.  The
  1020. goal was to determine if a ray intersects a triangle, and if so, what are the
  1021. barycentric coordinates.  For the uninitiated, barycentric coordinates are
  1022. three values (r,s,t) all in the range zero to one.  Also, the sum of the values
  1023. is one.  These values can be used as interpolation parameters for data which is
  1024. known at the triangle vertices (i.e. normals, colors, uv).
  1025.  
  1026. The algorithm presented previously involved a matrix inversion.  The math went
  1027. something like this: Since (r,s,t) are interpolation values, then the
  1028. intersection point (P) must be a combination of the triangle vertices scaled by
  1029. (r,s,t).
  1030.  
  1031.     [ x1 y1 z1 ] [ r ]   [ Px ]   [ r ]   [ Px ]
  1032.     [ x2 y2 z2 ] [ s ] = [ Py ]   [ s ] = [ Py ]  ~V
  1033.     [ x3 y3 z3 ] [ t ]   [ Pz ]   [ t ]   [ Pz ]
  1034.  
  1035. So, by inverting the vertex matrix (V -> ~V), and given any point in the plane
  1036. of the triangle, we can determine (r,s,t).  If they are in the range zero to
  1037. one, the point is in the triangle.
  1038.  
  1039. The only problem with this method is numerical instability.  If one vertex is
  1040. the origin, the matrix won't invert.  If the triangle lies in a coordinate
  1041. plane, the matrix won't invert.  In fact, for any triangle which lies in a
  1042. plane through the origin, the matrix won't invert.  (The vertex vectors don't
  1043. span R3.)  The reason this method is so unstable is because it tries to solve a
  1044. 2D problem in 3D.  Once the ray/plane intersection point is known, the
  1045. barycentric coordinates solution is a 2D issue.
  1046.  
  1047. Another way to think of barycentric coordinates is by the relative areas of the
  1048. subtriangles defined by the intersection point and the triangle vertices.
  1049.  
  1050.         1         If the area of triangle 123 is A, then the area of 
  1051.        /|\        P23 is rA.  Area 12P is sA and area 1P3 is tA.
  1052.       / | \       With this image, it is obvious that r+s+t must equal
  1053.      /  |  \      one.  If r, s, or t go outside the range zero to one,
  1054.     / t | s \     P will be outside the triangle.
  1055.    /  _-P-_  \    
  1056.   / _-     -_ \   
  1057.  /_-    r    -_\  
  1058. 3---------------2 
  1059.  
  1060. By using the above are relationships, the following equations define r, s and
  1061. t.
  1062.  
  1063.     N = triangle normal = (vec(1 2) cross vec(1 3))
  1064.         (vec(1 P) cross vec(1 3)) dot N
  1065.     s = -------------------------------
  1066.             length N
  1067.         (vec(1 2) cross vec(1 P)) dot N
  1068.     t = -------------------------------
  1069.             length N
  1070.     r = 1 - (s + t)
  1071.  
  1072. In actual code, it is better to avoid the divide and the square root.  So, you
  1073. can set s equal to the numerator, and then test if s is less than zero or
  1074. greater than sqr(length N).  For added efficiency, preprocess the data and
  1075. store sqr( length N) in the triangle data structure.  Even for extremely long
  1076. thin triangles, this method is accurate and numerically stable.
  1077.  
  1078. RGB                         Living life in the fast lane, eight items or less.
  1079. ({ihnp4,decvax}!utah-cs!bogart, bogart@cs.utah.edu)
  1080.  
  1081.  
  1082. --------
  1083.  
  1084. From: arenberg@trwrb.UUCP (Jeff Arenberg)
  1085. Subject: Re: Ray/Triangle Intersection with Barycentric Coordinates
  1086. [from USENET]
  1087.  
  1088. Ok, here is how I handle this calculation in my ray tracing program.  I think
  1089. it is quite efficient.
  1090.  
  1091. Let a triangle be represented in the following manner :
  1092.  
  1093.            |\
  1094.            |  \
  1095.         p1 |    \
  1096.            |      \
  1097.   O ------------>  |________\
  1098.        p0              p2
  1099.  
  1100. where p0 is the vector from the origin to one vertex and p1, p2 are the vectors
  1101. from the first vertex to the other two vertices.
  1102.  
  1103. Let N =   p1 X p2  be the normal to the triangle. 
  1104.           -------
  1105.     | p1 X p2 |
  1106.  
  1107. Construct the matrices
  1108.  
  1109.     b =  |  p1  | ,  bb = inv(b) = | bb[0] |
  1110.      |  p2  |                  | bb[1] |
  1111.      |  N   |                  | bb[2] |
  1112.  
  1113. and store away bb.
  1114.  
  1115. Let the intersecting ray be parameterizes as
  1116.  
  1117.     r = t * D + P
  1118.  
  1119. Now you can quickly intersect the ray with the triangle using the following
  1120. pseudo code. ( . means vector dot product)
  1121.  
  1122.     Den = D . bb[2]
  1123.     if (Den == 0) then ray parallel to triangle plane, so return
  1124.     
  1125.     Num = (p0 - P) . bb[2]
  1126.  
  1127.     t = Num / Den
  1128.     if (t <= 0) then on or behind triangle, so return
  1129.     
  1130.     p = t * D + P - p0
  1131.  
  1132.     a = p . bb[0]
  1133.     b = p . bb[1]
  1134.     
  1135.     if (a < 0.0 || b < 0.0 || a + b > 1.0) then not in triangle and return
  1136.  
  1137.     b1 = 1 - a - b     /* barycentric coordinates */
  1138.     b2 = a
  1139.     b3 = b
  1140.  
  1141.  
  1142. The idea here is that the matrix bb transforms to a coordinate frame where the
  1143. sides of the triangle form the X,Y axes and the normal the Z axis of the frame
  1144. and the sides have been scaled to unit length.  The variable Den represents the
  1145. dZ component of the ray in this frame.  If dZ is zero, then the ray must be
  1146. parallel to the X,Y plane.  Num is the Z location of the ray origin in the new
  1147. frame and t is simply the parameter in both frames required to intersect the
  1148. ray with the triangle's plane.  Once t is known, the intersection point is
  1149. found in the original frame, saved for latter use, and the X,Y coordinates of
  1150. this point are found in the triangle's frame.  A simple comparison is then made
  1151. to determine if the point is inside the triangle.  The barycenter coordinates
  1152. are also easily found.
  1153.  
  1154. I haven't seen this algorithm in any of the literature, but then I haven't
  1155. really looked either.  If anyone knows if this approach has been published
  1156. before, I'd really like to know about it.
  1157.  
  1158. Jeff Arenberg
  1159. -------------------------------------------------------------
  1160. UUCP : ( ucbvax, ihnp4, uscvax ) !trwrb!csed-pyramid!arenberg
  1161. GEnie: shifty
  1162. -------------------------------------------------------------
  1163.  
  1164. -------------------------------------------------------------------------------
  1165.  
  1166. Letters and Replies
  1167. -------------------
  1168.  
  1169. From: David F. Rogers <hpfcla!dfr@USNA.MIL>
  1170. Subject:  Transforming normals
  1171.  
  1172. G'day Eric,
  1173.  
  1174. Was skimming the back issues of the RT News and your memo on transforming
  1175. normals caught my eye. Another way of looking at the problem is to recall
  1176. that a polygonal volume is made up of planes that divide space into two
  1177. parts. The columns of the volume matrix are formed from the coefficients of
  1178. the plane equations. Transforming a volume matrix requires that you
  1179. premultiply by the inverse of the manipulation matrix. The components of a
  1180. normal are the first three coefficients of the plane equation. Hence the
  1181. same idea should apply. (see PECG Sec. 4-3 on Robert's algorithm pp 211-213).
  1182. Surprising what you can learn from Roberts' algorithm yet most people
  1183. discount it.
  1184.  
  1185. Dave Rogers
  1186.  
  1187. -------------------------------------------------------------------------------
  1188.  
  1189. From: mcvax!ecn-nlerf.com!jack@uunet.UU.NET (Jack van Wijk)
  1190. Subject: 2D box-test
  1191.  
  1192. An answer to the question of Jack Ritter, RT-News October 3, 1988, 
  1193.     by Jack van Wijk
  1194.  
  1195. Jack Ritter proposes a method to improve the efficiency by testing the
  1196. ray-point against a 2-D box. This method has been published before:
  1197.  
  1198. Bronsvoort, W.F., J.J. van Wijk, and F.W. Jansen, "Two methods for Improving
  1199. the Efficiency of Ray Casting in Solid Modelling", Computer-Aided Design,
  1200. 16(1), January 1984, pp. 51-55.
  1201.  
  1202. The method is used hierarchically here for CSG-defined models, in the spirit of
  1203. Roth. The gain of the method is significant, but not dramatically.  Probably in
  1204. our system the cost of the floating point intersection calculations was much
  1205. bigger than the box-test.
  1206.  
  1207. -------------------------------------------------------------------------------
  1208.  
  1209. From: Jeff Goldsmith
  1210. Subject: Neutral File Format
  1211.  
  1212.    Yuk.  I don't think that the world needs another ugly scene description
  1213. language unless it does something special.  I haven't seen renderman, but other
  1214. people seem to like it, so maybe that'll be better.  Yours looks a lot like
  1215. Wavefront's, with the disadvantage that it doesn't support a binary
  1216. representation.
  1217.  
  1218.     I hate to say it, but I use my own (less, I feel, but still ugly) text
  1219. format that does have a binary format as well as an ascii numerical format.
  1220. You are welcome to it if you want, but I would doubt it.  It's different in
  1221. that algebraic expressions are possible in place of any constant, plus it
  1222. includes flow control, tests, some computer algebra-type primitives and macros.
  1223. Plus, a historyer, command line editing, etc.  It looks a lot like an
  1224. interactive F77 interpreter with massive numbers of bizarre graphics commands.
  1225.  
  1226.     Perhaps you can instigate an effort to create a sensible object description
  1227. language and (maybe) supply an interpreter and some compiled formats.  It would
  1228. be worthwhile.  Perhaps just setting up an effort to spec one out would be good
  1229. enough.  Whatever.
  1230.  
  1231. --------
  1232.  
  1233. Reply From: Eric Haines
  1234.  
  1235.     I guess I didn't make it clear - NFF has been in use about a year now.
  1236. It's the format that the SPD benchmarking package uses.  I should have written
  1237. a better preface, obviously: I wanted to get the point across that this is
  1238. supposed to be absolutely minimal, and that no one should be using it for
  1239. modeling, but only for transferring the final database to a renderer.  There
  1240. could indeed be an NFF++ language which would not be user hostile, like NFF is.
  1241. Essentially, I see NFF as incredibly stupid and brain damaged.  This makes it
  1242. accessible to almost anyone who simply wants to read in a scene database
  1243. without too much hassle (even now, though, I'm getting questions like "what's
  1244. hither?" from people on USENET).
  1245.  
  1246.     Anyway, I like your ideas for algebraic expressions - I could use it
  1247. right now in my other language, which is a tad more user friendly and is what I
  1248. use when I want to munge around by hand.
  1249.  
  1250. --------
  1251.  
  1252. Reply From: Jeff Goldsmith
  1253.  
  1254.     Hmmm.  If you are trying to find an interface that can be used by
  1255. professionals, then it is probably not the same interface that might be used by
  1256. USENET-types.  Both problems might be worth addressing, but I'd say (from gross
  1257. personal bias) that the high-end problem is worth doing more.  Simply so that I
  1258. can trade databases more easily.  Simply so that code can be shared more
  1259. easily.  I'm really not all that concerned about getting computer graphics
  1260. capabilities out to high schoolers and other randoms quite yet.  In fact, I
  1261. doubt that graphics will have that sort of distribution in its current
  1262. "modeler-renderer" form.  I suspect that Mac interface and high-quality
  1263. user-interfaces will be the medium for that type of technology dissemination.
  1264. Eventually, we'll have programs that are called "Graphics Processors" or some
  1265. other nonsense and will be transmitting reasonably complex graphics
  1266. capabilities to anyone who wants to do it.  Artists will be the primary users,
  1267. though managers and engineers will use them in both technical and non-
  1268. technical efforts.  Joe six-pack just doesn't have that much
  1269. use/interest/capacity for generating pictures out of thin air.
  1270.  
  1271.     It would be really nice if there were a standardish graphics language
  1272. kernel.  Since just about everybody has their own interpreter that does just
  1273. about the same set of very basic things, plus, of course, their set of
  1274. enhancements, why not create a spec that would still allow all the
  1275. enhancements, but cover the basics thoroughly.  It might stifle creativity a
  1276. bit, but I doubt it.
  1277.  
  1278.     For transmission between modelers and renders, why not use the same
  1279. language as input to modelers?  Remove some options (or don't) and keep the
  1280. files the same.  If you are worried about speed, then a binary complied version
  1281. is necessary in any event.  (Case in point: my current project is Hubble Space
  1282. Telescope.  The uncompiled model takes 17! minutes to read in.  The compiled
  1283. one takes about 35 seconds.)  It might also be worth considering that some
  1284. people out there do use Fortran and that some things are hard to parse (NFF,
  1285. for example) in Fortran.  In fact, it's hard to parse anything that isn't fixed
  1286. field formatted in Fortran.  (I've got an ugly version like that, too.  Really
  1287. ugly.  .7 Fixmans maybe even.)
  1288.  
  1289. ------------------------------------------------------------------------------
  1290.  
  1291. From: Cary Scofield
  1292. Subject: RT and applications
  1293.  
  1294. K.R.Subramanian (UTexas at Austin) asks:
  1295.  
  1296. > On the RT news: I would like to see practical applications of ray tracing
  1297. > described here. What applications really require mirror reflections,
  1298. > refraction etc. Haven't seen applications where ray tracing was the way
  1299. > to go.
  1300.  
  1301. Applications for ray tracing (besides "realistic" image synthesis):
  1302.  
  1303.     MCAD (3D solids modeling)
  1304.  
  1305.     Material property calculations (mass, center of gravity,
  1306.         moments of inertia, etc.)
  1307.  
  1308.     Lens design (geometric optics)
  1309.  
  1310.     Toolpath planning for numerical-controlled milling
  1311.  
  1312.     Weapons research (ballistics analysis)
  1313.  
  1314.     Vulnerability assessments (collision detection between a
  1315.         projectile and an object)
  1316.  
  1317.     Nuclear reactors (determination of neutron distributions
  1318.         in reactor cores)
  1319.  
  1320.     Astrophysics (eg., diffusion of light through stellar
  1321.         atmospheres; penetration of light through planetary
  1322.         atmospheres)
  1323.  
  1324. IN SUMMARY: Just about anything that requires solving a linear (and non-linear
  1325. w/restrictions) particle transport problem is a candidate application for
  1326. ray-tracing/ray-casting algorithms.
  1327.  
  1328.  
  1329. Cary Scofield - Apollo Computer Inc. - Graphics Software R&D
  1330. UUCP: [decwrl!decvax,mit-eddie,attunix]!apollo!scofield
  1331. ARPA: scofield@apollo.com
  1332. USMAIL: 270 Billerica Rd., Chelmsford, MA 01824  PHONE: (508)256-6600 x7744
  1333.  
  1334. ------------------------------------------------------------------------------
  1335.  
  1336. From: subramn@cs.utexas.edu (K.R.Subramanian.)
  1337. Subject: Re:  Goldsmith and eyes
  1338.  
  1339. on the automatic hierarchy scheme of Goldsmith and Salmon:
  1340.  
  1341.      Somewhere in the RT news you mentioned that the hierarchy is optimized
  1342. only for primary rays from the eye?  
  1343.  
  1344.     In their paper, they mention that the probability of hitting a bounding
  1345. volume is proportional to the solid angle of the bounding volume presented at
  1346. the eye and if the eye is sufficiently far away, then this can be approximated
  1347. by the surface area of the bounding volume of the object(s).
  1348.  
  1349.     Is this the reason that the hierarchy is not the best for secondary
  1350. rays?  If that is so, what if the eye is somewhere within the scene?  In this
  1351. case, the assumption is again violated.
  1352.  
  1353.  
  1354. K.R.Subramanian
  1355. Department of Computer Sciences
  1356. The University of Texas at Austin
  1357. Austin, Tx-78712.
  1358. subramn@cs.utexas.edu
  1359. {uunet}!cs.utexas.edu!subramn
  1360.  
  1361. --------
  1362.  
  1363. Reply From: Eric Haines
  1364.  
  1365.     Jeff Goldsmith and I were discussing in the latest RT News whether the
  1366. eye location might be used to help out the hierarchy made by the Goldsmith/
  1367. Salmon algorithm.  Essentially, Jeff finds that since so many of his rays are
  1368. eye rays, he might want to try to test intersection of the objects closer to
  1369. the eye first.  In other words, after the G-S hierarchy is created, go through
  1370. and sort the sons of each bounding volume by the additional criterion of
  1371. distance to the eye.  This is an added fillip to the G-S algorithm: normally
  1372. (i.e. in the original article) they do not pay attention to the order of the
  1373. sons of a bounding volume.  The idea is that if you test the closer object
  1374. first and hit it, you can often quickly reject the further object when it is
  1375. tested (since you now have a maximum bound on the distance the ray is shot).
  1376. For example, say you have a list: polygon, sphere.  The closest approach (or
  1377. the center, or whatever criterion you decide to use) of the sphere is closer
  1378. than that of the polygon, so you reorder the son list: sphere, polygon.  If you
  1379. now test a ray against this list you get four possibilities:
  1380.  
  1381.     1) Sphere missed, polygon missed - no savings is accrued by sorting.
  1382.     2) Sphere missed, polygon hit - no savings is accrued by sorting.
  1383.     3) Sphere hit, polygon missed - by hitting the sphere, we now have
  1384.        a maximum bound on the ray's (really the line segment's) length.
  1385.        Now when the polygon is tested it might be quickly rejected. Say
  1386.        we hit the polygon plane beyond the maximum distance.  In this
  1387.        case, we can stop testing the polygon without doing the inside-
  1388.        outside testing.  If we had intersected in the order "polygon,
  1389.        sphere", we would have had to do this inside-outside test, then
  1390.        gone on to test the sphere - extra work we could have avoided.
  1391.     4) Sphere hit, polygon hit - Pretty much the same as case (3), except
  1392.        even more so:  in this case time is saved by (a) not having to
  1393.        to do the inside-outside test, (b) not having to store information
  1394.        about the intersected polygon, and (c) it is all the more likely
  1395.        that a polygon beyond the sphere which is actually hit has the
  1396.        intersection distance beyond the sphere's intersection distance
  1397.        (vs. a missed polygon, where the intersection distance is somewhere
  1398.        on an infinite plane which could easily be in front of the sphere).
  1399.  
  1400.     My idea for ordering the son lists was simply object size: within a son
  1401. list, sort from largest to smallest area, on the theory that larger objects
  1402. will tend to get hit more often and so get you an intersection point quickly.
  1403. The savings are based more on probability of hits, but the idea makes for G-S
  1404. hierarchy trees that are not eye-dependent (I use item buffering, so eye rays
  1405. are minimized).  Another idea is to order the lists by difficulty of
  1406. calculation: test spheres before splines, test triangles before 100-sided
  1407. polygons, etc.
  1408.  
  1409.     The idea of ordering lists by either size or difficulty is valid for
  1410. other efficiency schemes, too.  Octree lists and SEADS might benefit from
  1411. ordering the lists in a sensible fashion.  Has anyone else out there tried such
  1412. schemes?
  1413.  
  1414. --------
  1415.  
  1416. Reply From: subramn@cs.utexas.edu (K.R.Subramanian.)
  1417.  
  1418. Yes, I understood these discussions and they are all valid.  Somehow just
  1419. trying to optimize the eye rays doesn't impress me very much because you
  1420. yourself have mentioned the item buffer for eye rays and the light buffer for
  1421. doing shadow rays from the first level intersections.  It is not very clear to
  1422. me if the above schemes you mention will bear a great improvement.  Anyhow, I
  1423. am really interested in secondary rays since that's what ray tracing is all
  1424. about. In very complex scenes like the Cornell rings or Cornell mountain
  1425. databases (SPD data bases) its the secondary rays that are dominant.
  1426.  
  1427. My real question was trying to figure out if Jeff's approximation in using the
  1428. surface area of the bounding volumes to figure out the conditional
  1429. probabilities was valid for all rays, primary and secondary.  There he said
  1430. something like 'if you are far away, you can approximate ........'. Does this
  1431. refer to the ray length ?
  1432.  
  1433.  
  1434. K.R.Subramanian
  1435. Department of Computer Sciences
  1436. The University of Texas at Austin
  1437. Austin, Tx-78712.
  1438. subramn@cs.utexas.edu
  1439. {uunet}!cs.utexas.edu!subramn
  1440.  
  1441. --------
  1442.  
  1443. Reply From: Eric Haines
  1444.  
  1445.     Indeed, Jeff's optimization for eye rays doesn't thrill me.  But how do
  1446. you feel about optimizing on size or on intersection complexity (or both)?
  1447. Seems like this has a good chance of validity for secondary rays, too.
  1448.  
  1449.     I will pass on your comments to Jeff and see how he responds.  You
  1450. might just want to write him directly at:
  1451.  
  1452. alias    jeff_goldsmith    jeff@hamlet.caltech.edu
  1453.  
  1454.  
  1455.     I should clear up an important point: the SPD databases are in no way
  1456. connected with Cornell.  I designed them in August 1987, more than a year and a
  1457. half after leaving Cornell.  I hope that nowhere in the document I imply that
  1458. Cornell is associated with these.  Why the fuss?  Partly because Don Greenberg,
  1459. my president (at 3D/Eye Inc) is very firm about separating work done at 3D/Eye
  1460. and work done at the Cornell graphics lab (which he also runs).  Another reason
  1461. is that Cornell doesn't "endorse" these databases - Don would be pretty bugged
  1462. at me if it was said that they did.  So, please just refer to the SPD
  1463. databases, or the 3D/Eye SPD databases.  'Nuff said, and thanks.
  1464.  
  1465. --------
  1466.  
  1467. Reply From: KR Subramanian
  1468.  
  1469. >          Indeed, Jeff's optimization for eye rays doesn't thrill me.  But 
  1470. >    how do you feel about optimizing on size or on intersection complexity 
  1471. >    (or both)? Seems like this has a good chance of validity for 
  1472. >    secondary rays, too.
  1473.     
  1474.     You are right. Using size or intersection cost in ordering your
  1475. intersections will do good, especially in shadow ray computation. As far as the
  1476. pixel or reflection rays are concerned, this depends on the method used. I have
  1477. a modified version of the BSP tree where the search goes very close to the path
  1478. of the ray and only on collection of unordered objects can we take advantage of
  1479. the above 2 facts.
  1480.  
  1481.     Also, this is basically a hack (well, I wouldn't go quite that far).
  1482. But size as presented to a ray depends on the direction of the ray, since
  1483. projected area on to a ray varies.  A polygon could present its entire area to
  1484. a ray orthogonal to it or almost nothing if its parallel to it.
  1485.  
  1486.         For shadow rays, if you have a mix of complex objects (patches, splines
  1487. etc) and simple objects like polygons, spheres you better do this in the order
  1488. of their complexity. That will definitely save a lot of work especially when
  1489. there are multiple light sources and lots of spawned rays.
  1490.     
  1491. --------
  1492.  
  1493. Reply From: Jeff Goldsmith
  1494.  
  1495. Ok.  Optimizations.
  1496.  
  1497.     1) The only reason that I suggest ordering from the eye is that there are
  1498. eye rays in all scenes.  Not true for secondary.  Besides, most secondary rays
  1499. get other kludges.  More importantly, they are somewhat random, so it's tough
  1500. to optimize for them.
  1501.  
  1502.     2) What he is confusing with the above is the heuristic for "probability"
  1503. determination.  That is not based on eye rays, but assumes a uniform
  1504. distribution of ray directions throughout the scene.  This is not the case, but
  1505. we haven't dealt with more complicated heuristics other than to decide that
  1506. they are a bit more tricky than they might seem.
  1507.  
  1508.     3) There is a factor in the tree combination heuristic (the one that adds
  1509. up the node costs into a tree cost) that is biased for primary rays.  I call
  1510. the tree cost the sum of the node costs.  This isn't strictly true for
  1511. secondary rays, because they emanate from a leaf node, thereby adding some
  1512. additional cost to the big nodes.  We tried accounting for this by using a
  1513. formulation that takes internal emanation costs into account.  Yes, it was more
  1514. accurate.  Not by enough to bother with.  I think the difference was on the
  1515. order of a few percent.  It was definitely well under the noise level.  We
  1516. don't use it anymore for no particular reason.  Don't bother to code it, except
  1517. as an intellectual exercise.  (Not a bad one at that.)
  1518.  
  1519. -------------------------------------------------------------------------------
  1520.  
  1521. From: hpfcla!bogart%gr@cs.utah.edu (Rod G. Bogart)
  1522. Subject: Wood Textures
  1523.  
  1524. As for the wood textures, there really isn't a lot to say.  They were scanned
  1525. with a Vicom frame grabber.  The data is 512x512 bytes.  The book they were
  1526. taken from is Textures by Brodatz.  We do not have permission from the author
  1527. or the publisher, so thats why we haven't made the whole set available.  Yes,
  1528. we did scan the whole book (over 100 images) but without permission, I dare not
  1529. let out more than a handful.  So, the images are on cs.utah.edu, and they are
  1530. wood[1234].img.  As for mailing them (UUCP), I'd rather not.  A quarter meg
  1531. uuencoded is a long mail message.  If you really really can't get them from a
  1532. friend with ftp access, then ask nice.
  1533.  
  1534. RGB
  1535.  
  1536. -------------------------------------------------------------------------------
  1537.  
  1538. From: stadnism@sun.soe.UUCP ( Steven Stadnicki,212 Reynolds,2684079,5186432664)
  1539. Subject: Shadows, mirrors, and "virtual lighting"
  1540. [from USENET]
  1541.  
  1542.      I am currently working on a simple raytracer (VERY simple--so far it only
  1543. models triangles) and have a major problem.  For shadow calculations I need to
  1544. know if there are any light sources which could shine on a point.  The problem?
  1545. With mirrors in the scene, it's possible to have reflected light illuminate
  1546. some section that would normally be in shadow, e. g.:
  1547.  
  1548. Light-> O                               |                               O'
  1549.          \------                        |                        ------/
  1550.                 \------                 |                 ------/
  1551.                        \------          |          ------/
  1552.                               \------   | M ------/
  1553.              +-----+                 \-\| i
  1554.              |     |                 /-/| r
  1555.              |object          /------   | r
  1556.              |     |   /------          | o
  1557.              |     | SSSS               | r
  1558. ----------------------------------------|
  1559.  
  1560. Then the area covered by the S's would not be in shadow, even though it isn't
  1561. directly illuminated by the light O.  I know how to solve the problem using
  1562. "virtual" lights; that is, a light that you would obtain if you reflected the
  1563. Light at O in the mirror above; it would appear at O'.  Multiple reflections
  1564. can be handled by re-reflecting virtual lights, etc.  So what's my problem?
  1565. Simple: if you have M mirrors and reflections can go up to depth K, you need
  1566. O(M^K) virtual lights for each "real" light.  Is there any way I might be able
  1567. to eliminate, for a given point, some combinations of reflections without
  1568. having to do much testing?
  1569.  
  1570.                                             Steven Stadnicki
  1571.                                             stadnism@clutx.clarkson.edu
  1572.  
  1573. P.S.  The "virtual lights" idea came from a wonderful book: "A Companion
  1574. to Concrete Analysis", by Melzak.
  1575.  
  1576. -------------------------------------------------------------------------------
  1577.  
  1578. From: jevans@cpsc.ucalgary.ca (David Jevans)
  1579. Subject: Re: Basics of raytracing
  1580. [from USENET]
  1581.  
  1582. If anyone is looking for the analysis of a regular subdivision
  1583. ray tracing method, see:
  1584.  
  1585.  journal:  Visual Computer July 1988
  1586.  title:    Analysis of an Algorithm for Fast Ray Tracing Using
  1587.            Uniform Space Subdivision
  1588.  authors:  Cleary, J and Wyvill, G
  1589.  
  1590. What the paper does is to describe the voxel traversal algorithm that Cleary
  1591. developed and that I use in my ray tracer, and then a theoretical analysis is
  1592. presented.  It is a convincing argument for using regular voxel subdivision
  1593. (although my method - submitted to CGI '89 in UK - works better for scenes
  1594. where polygons are not evenly distributed throughout a scene).
  1595.  
  1596. Visual Computer is published by Springer Verlag.  Unfortunately it doesn't
  1597. enjoy the circulation of CG&A or TOG so it is pretty (outrageously?) expensive
  1598. (like $160 US for 6 issues!).
  1599.  
  1600. The design of our Mesh Machine is in:
  1601.   journal:  Proc CIPS Graphics Interface '83, 33-34, Edmonton, Alberta, May
  1602.   title:    Design and Analysis of a Parallel Ray Tracing Computer
  1603.   authors:  John Cleary and Brian Wyvill and Graham Birtwistle and Reddy Vatti
  1604.  
  1605. --------(second article appended)
  1606.  
  1607. In article <4589@polyslo.CalPoly.EDU>, sjankows@polyslo.CalPoly.EDU (Mr Booga (detonate)) writes:
  1608. >   I have a request similar to Randy Ray's (Raytracing introduction).  I am
  1609. > starting a project in parallel raytracing using a Sequent Balance 8000 and
  1610. > a couple of color Sun 3's running X.  I have virtually exhausted the 
  1611. > local resources on raytracing and am in need of basic ray tracing algorithms
  1612. > and simple optimization algorithms.
  1613.  
  1614. Our university (the U. of Calgary) has significant experience in parallel ray
  1615. tracing.  Professors Cleary and Wyvill developed a mesh machine for raytracing
  1616. several years ago.  Graduate student (now working at Alias) Andrew Pearce
  1617. implemented a parallel raytracer for the mesh machine that also ran on a
  1618. network of Corvus'.
  1619.  
  1620. I implemented a parallel ray tracing algorithm for polygons and implicit
  1621. surfaces earlier in the year on a BBN Butterfly.  I used regular spatial
  1622. subdivision combined with adaptive (octree) subdivision to converge on the
  1623. surfaces.  Up to 10 nodes I got almost linear speedup, and on a 70 node system
  1624. I was still getting 50% from each new node added.
  1625.  
  1626. If anyone else is interested in references on parallel raytracing (the mesh
  1627. machine articles, Pearces Masters thesis, or others such as Dippe in Siggraph
  1628. 86 etc) you can send me mail and I can send a list or copies of some of t
  1629.  
  1630. "behind these eyes that say I still exist..."
  1631.  
  1632. David Jevans, U of Calgary Computer Science, Calgary AB  T2N 1N4  Canada
  1633. uucp: ...{ubc-cs,utai,alberta}!calgary!jevans
  1634.  
  1635. --------
  1636.  
  1637. From: sdg@helios.cs.duke.edu (Subrata Dasgupta)
  1638. Subject: Re: Basics of raytracing
  1639. [from USENET]
  1640.  
  1641. In article <77@cs-spool.calgary.UUCP> jevans@cpsc.ucalgary.ca (David Jevans) writes:
  1642. >
  1643. >Our university (the U. of Calgary) has significant experience in parallel
  1644. >ray tracing.  Professors Cleary and Wyvill developed a mesh machine for
  1645. >raytracing several years ago.  Graduate student (now working at Alias)
  1646. >Andrew Pearce implemented a parallel raytracer for the mesh machine
  1647. >that also ran on a network of Corvus'.
  1648.  
  1649.     This all sounds very interesting! A few articles back a person inquired
  1650. about a paper on an algorithm analysis by Profs. Wyvill and Cleary. I am trying
  1651. to track that paper down but the reason for sending you this letter is to
  1652. request some info. on the mesh machine for ray- tracing developed at your univ.
  1653. If you can refer me to a recent paper on this machine it will be great. At Duke
  1654. we are developing what has come to be known as the Raycasting machine which
  1655. computes intersection of an array of parallel rays with primitives and then
  1656. uses constructive solid geometry to compute the shape, volume and other
  1657. parameters of an arbitrary object. Thus I would be very much interested in any
  1658. work in this area.
  1659.  
  1660. >If anyone else is interested in references on parallel raytracing
  1661. >(the mesh machine articles, Pearces Masters thesis, or others
  1662. >such as Dippe in Siggraph 86 etc) you can send me mail and I can send
  1663. >a list or copies of some of t
  1664.  
  1665. Any other info. in this area would be very much appreciated. Thanks!
  1666.  
  1667. Subrata Dasgupta
  1668.  
  1669. Department of Computer Science, Duke University, Durham, NC 27706
  1670. ARPA:     sdg@cs.duke.edu
  1671. CSNET:     sdg@duke 
  1672. UUCP:     decvax!duke!sdg    
  1673.  
  1674. -------------------------------------------------------------------------------
  1675.  
  1676. From: upstill@pixar.UUCP (Steve Upstill)
  1677. Subject: Re: What is Renderman Standard?
  1678. Organization: Pixar -- Marin County, California
  1679. [from USENET]
  1680.  
  1681.     I'm writing the RenderMan book, so I guess I'm qualified to clear up 
  1682.     a couple of things from this posting:
  1683.  
  1684. In article <25225@tut.cis.ohio-state.edu> fish@shape.cis.ohio-state.edu (Keith Fish) writes:
  1685. >
  1686. >I'm sure PIXAR is more than willing to send you a spec of Renderman ...
  1687. >just ask them.  Also, there may be something available through the
  1688. >Siggraph 88 proceedings.
  1689.  
  1690.     There's nothing in the SIGGRAPH 88 proceedings about RenderMan.  You can
  1691.     get a copy of the spec by sending $15 (yes, I know it's a pain, but we've
  1692.     sent out ~1000 specs so far, and it got kind of expensive; this is the
  1693.     real cost) to
  1694.     Pixar
  1695.     3240 Kerner Blvd.
  1696.     San Rafael, Ca. 94901
  1697.  
  1698. >
  1699. ><<< The following is MY understanding of Renderman >>>
  1700. >
  1701. >Renderman is an attempt by PIXAR to force a de facto standard interface in the
  1702. >Graphics Rendering/Imaging arena.  My understanding is that this interface
  1703. >is based on tools/routines that they have developed throughout the years for
  1704. >use on their hardware.  Because it was not designed for general/varying
  1705. >graphics architectures, many companies wonder if it will only work well on
  1706. >their systems -- hence, making their hardware also the de facto standard.
  1707.  
  1708.     RenderMan is based on about six years' research at Pixar and Lucasfilm on
  1709.     how to get quasi-photographic realism into computer graphics.  The effort
  1710.     has encompassed algorithms, software and hardware, and much of what is in
  1711.     the standard has been proven to work by actually implementing it;  so in 
  1712.     some sense the above is a correct statement.  However, there is an  
  1713.     implication here that RenderMan is some in-house methodology that Pixar is
  1714.     trying to foist off on the rest of the industry.  That is definitely 
  1715.     untrue.  Pat Hanrahan and Tom Porter spent about six months talking to 
  1716.     other companies in the industry, trying to establish a consensus and
  1717.     ensure that the standard is technically sound.  The best evidence I
  1718.     have of how much it changed as a result is the amount of work I had
  1719.     to put into changing my book between Versions 2 and 3 of the spec.
  1720.  
  1721.     As for the standard being specific to some particular hardware or 
  1722.     software configuration, you just have to look at the standard itself.
  1723.     From the geometric standpoint, it is a simple protocol for describing
  1724.     scenes, as generic as can be, and deliberately so.  It is essentially
  1725.     a superset of PHIGS+, with two differences: there is no provision for
  1726.     changing model descriptions once defined (you have to respecify scenes
  1727.     from one frame to another), and there are extensions for realism like
  1728.     the shading language, motion blur and depth-of-field.  The hardware-
  1729.     specificity is a canard, pure and simple.  The current (incomplete)
  1730.     version of our software runs on Sun, Silicon Graphics and '386-based
  1731.     Compaq machines, as well as on Transputer-based hardware accelerators
  1732.     in all three.
  1733.  
  1734.     More specifically, I can tell you that Pat went to a lot of trouble to
  1735.     make the interface standard independent of even the basic rendering 
  1736.     algorithm.  That is, RenderMan is consistent with scanline-based methods 
  1737.     as well as ray tracing; standard shading models as well as radiosity 
  1738.     techniques.  That wasn't easy.
  1739.  
  1740. >More importantly, PIXAR already has the software written for this "standard"
  1741. >so if this becomes a standard, any competitor of PIXAR would have to make the
  1742. >$$$ investment to write this software -- a good way to limit your competition.
  1743.  
  1744.     Sorry.  I'm working closely with the software group in trying to 
  1745.     generate pictures and example programs for my book, and I can testify 
  1746.     that the software, while quite far along, is not "already written",
  1747.     largely because of extensions to the standard that came out of 
  1748.     discussions with other companies.  True enough, we probably have a 
  1749.     head start on others, but the standard has been out there for five 
  1750.     months now, and will probably have been around for close to a year 
  1751.     before Pixar has its stuff on the market.
  1752.  
  1753.     Besides, the standard specifies nine capabilities which are optional for
  1754.     any particular implementation.  No renderer should have any trouble
  1755.     meeting the RenderMan standard if it supports PHIGS primitives and 
  1756.     performs such quality calculations as anti-aliasing and gamma correction.
  1757.  
  1758. >PIXAR made a big push for Renderman at Siggraph 88.  Although a few companies
  1759. >agreed to endorse this package (SUN, of course ... they'd endorse anything to
  1760. >get their name in lights ;-), many took a more intelligent approach and said
  1761. >that they would evaluate it.  PIXAR basically used a lot of marketing hype
  1762. >to get support initially and even listed supporters who, when you would
  1763. >walk up to their booth at Siggraph and ask them, said they did not support it.
  1764.  
  1765.     This comment is borderline offensive to me, partly because it is admittedly
  1766.     based on speculation and partly because I was around during the process
  1767.     I mentioned above, and I know what a painful and elaborate job Pat had
  1768.     to get the proposal into shape to win the support of the companies he did.
  1769.     There is a difference between endorsement and support.  Endorsement means
  1770.     "we have evaluated this; it is sound and we believe this is the way the
  1771.     industry should go".  Support means "we have hardware and/or software
  1772.     which implements this standard".  You would expect the latter to be a
  1773.     subset of the former.
  1774.  
  1775.     Nineteen companies endorsed the RenderMan standard at rollout.  The main 
  1776.     holdouts at this point are Silicon Graphics and Wavefront.  My personal
  1777.     suspicion (not to be taken as the views of Pixar) is that Wavefront 
  1778.     perceives RenderMan as a threat to their rendering market because 
  1779.     it supports features which would be difficult or impossible to 
  1780.     implement using their rendering algorithm.  And Wavefront software 
  1781.     runs on SGI machines.
  1782.  
  1783. >Many (most ?) of the companies who looked at Renderman have decided that it
  1784. >still needs a lot of work before it can be considered as even a base to start
  1785. >the development of a standard in the rendering/imaging arena.
  1786.  
  1787.     Who are these "many companies"??  What is this "lot of work"??  We would
  1788.     love to hear about.  There is a RenderMan Advisory Council made up of
  1789.     industry representatives whose job it is to hear complaints like that.
  1790.  
  1791.     I don't expect to hear too many of them, however.  As I said before,
  1792.     RenderMan is basically a simple-minded extension of PHIGS (read: EXTENSION. 
  1793.     Meaning "If PHIGS is good enough for you, so should be RenderMan") 
  1794.     adding constructs for supporting realistic graphics.  It has gone 
  1795.     through the mill of two major rewrites as a result of consultations
  1796.     with "many companies".
  1797.  
  1798. >There are
  1799. >several problems in the area of getting Renderman to mesh with other current
  1800. >standard graphics environments (eg. phigs, cgi, ...) so that it becomes a
  1801. >natural extension to the less-interesting/fancy graphics people do today.
  1802.  
  1803.     What are these problems??  Can you be more specific??
  1804.  
  1805. >Even for the niche market of image-rendering, Renderman does not include
  1806. >many (any ?) ideas from the companies that have been in this business for
  1807. >years ...  Wavefront, Alias Research, Neo-Visuals, Disney, etc.
  1808.  
  1809.     What are these ideas??  Come to think of it, what ideas has Disney
  1810.     contributed to image rendering?
  1811.  
  1812. >Keith Fish
  1813. >
  1814. >PS. I'm not cutting down PIXAR -- I think that the work they do is
  1815. >    fantastic (literally)!  I just don't like marketing ploys to degrade
  1816. >    what should be good technology, and this is what the Renderman-hype
  1817. >    seems to be.
  1818.  
  1819.     I appreciate your appreciation, but I wish I knew where these 
  1820.     impressions of yours came from.
  1821.  
  1822. >    I think that the industry can develop a good imaging
  1823. >    interface standard if everyone (animation software companies,
  1824. >    universities, graphics hardware companies, etc.) gets to contribute.
  1825.  
  1826.     Again, I thought that's exactly what we did.
  1827.  
  1828.     If anyone on the net is interested in more information on RenderMan
  1829.     without investing $15 in a spec, the current issue of Unix Review
  1830.     includes an article I wrote discussing the major aspects of the 
  1831.     standard.  Also, the November issue of Dr. Dobb's Journal has a 
  1832.     cover story on the shading language, which is RenderMan's doorway
  1833.     for extensibility.
  1834.  
  1835. Steve Upstill
  1836.  
  1837. -------------------------------------------------------------------------------
  1838.  
  1839. Free On-Line Computer Graphics References
  1840. -----------------------------------------
  1841.  
  1842. [incidentally, the latest version of the Ray Tracing Bibliography by Paul
  1843. Heckbert (and updated by myself) is available from Mark Vandewettering's
  1844. anonymous ftp site, drizzle.cs.uoregon.edu. --EAH]
  1845.  
  1846. From: eugene@eos.UUCP (Eugene Miya)
  1847. Subject: A little announcement (part 1 of 3)
  1848. Organization: NASA Ames Research Center, Calif.
  1849. [from USENET]
  1850.  
  1851. For a long time now, a lot of people have been asking simple information
  1852. queries in places like comp.graphics.  This resulted in the inevitable
  1853. repeating of topics, flood of inane news messages (many of which are wrong),
  1854. and a repeating cycle which bring disillusionment.
  1855.  
  1856. Computer graphics, unlike a lot of disciplines, has an overseer of the
  1857. literature.  If you open up an ACM/SIGGRAPH proceedings you will notice a
  1858. reference to "References" to Baldev Singh (currently at MCC).  Baldev has has
  1859. published significant references in the Computer Graphics Quarterly for a
  1860. couple of years (and is preparing for another shortly).  These bibliographies:
  1861.  
  1862. %A Baldev Singh
  1863. %T Computer Grap[hics Literature for 1986: A Bibliography
  1864. %J Computer Graphics
  1865. %V 21
  1866. %N 3
  1867. %D June 1987
  1868. %P 189-208
  1869.  
  1870. and
  1871.  
  1872. %A Baldev Singh
  1873. %A Gunther Schrack
  1874. %T Computer Grap[hics Literature for 1985: A Bibliography
  1875. %J Computer Graphics
  1876. %V 20
  1877. %N 3
  1878. %D July 1986
  1879. %P 85-145
  1880.  
  1881. Coverage in the field (for graphics) is quite good.  I know, I am trying to
  1882. maintain a comprehensive study of another field (see postings in comp.arch or
  1883. comp.parallel).  The problem is searching for literature on a paper database is
  1884. difficult (I won't get into details, take my word).  Frequently entries are
  1885. also wrong (not as bad as the net however).
  1886.  
  1887. A machine readable form however, solves many of these problems.  You can update
  1888. a machine readable form.  The problem becomes then of distribution and search,
  1889. surprise! something computers are good for!  It is with this back ground that
  1890. we in the Bay Area Association for Computing Machinery's Special Interest Group
  1891. on Computer Graphics announce the availability of Singh's ACM/SIGGRAPH
  1892. bibliography in a machine readable form.
  1893.  
  1894. While Baldev will oversee the collection and quality of entries, we with a
  1895. generous donation of cycles and disk space from the Digital Equipment
  1896. Corporation (DEC) will help oversee the redistribution of the computer graphics
  1897. bibliography.
  1898.  
  1899. This first article will describe how hosts on the Internet can retrieve the
  1900. computer graphics bibliography.  Two other optional means for those not on the
  1901. Internet will be presented over the next two days (but clearly Internet is the
  1902. superior way to do this).
  1903.  
  1904. THERE ARE TWO DANGERS inherent in all of these means.  The bibliography is kind
  1905. of big.  It's not a megabyte, but it's getting there.  IF YOU ARE at an
  1906. Internet site with lots of users, it's kind of dumb if you ALL made personal
  1907. copies (n megabytes ;-).  So before you copy, agree who at your site will
  1908. oversee obtaining it.  One copy per site please.
  1909.  
  1910. The second danger is everybody copying at the same time.  The information which
  1911. follows will illustrate the problem.  The DEC host which you be copying from is
  1912. DEC's gateway to the Internet.  It will be a tragedy to abuse this gateway if
  1913. every site tried to copy at once.  I know, we provide the 9600 baud IMP port to
  1914. DEC.  So let's not abuse this, let's be patient and take our turns. 1) copy the
  1915. computer graphics bibliography only during the weekends or evenings Pacific
  1916. Daylight or Standard time. 2) copy on a randomly determined evening of the
  1917. week.  How?  Flip a coin 3 times (say HTH, make Head == 0, Tails == 1, this
  1918. translates to 010 binary or 2 base 10). Using Sunday as 1, make Monday 2, copy
  1919. Monday evening P[SD]T.  (HHH or 000, retry).  If this is confusing, wait for
  1920. the weekend. AGAIN copy only in the evenings.
  1921.  
  1922. Now the questions you have all been patiently waiting for and I have been
  1923. rambling: where do I get, and how do I get it.  The Internet host is the
  1924. machine gatekeeper.dec.com [128.45.9.52].  Please respect this machine (hacker
  1925. ethic) for the assistance DEC is providing.  We don't wish to yank the
  1926. bibliography from this machine.  Don't try to break in, please.
  1927.  
  1928. Old time ARPAnet hackers will know where to go from here.  The "how" is a
  1929. process called anonymous FTP (File Transfer Protocol or Program, hasn't changed
  1930. since 1973 ;-)] Don't all do this at once.  Below is a sample session with
  1931. annotation as to how this works.  Catch the names of the subdirectories and
  1932. files below.  A lot of people aren't familiar with distributed systems other
  1933. than Email, so we've made the language oversimplistic, if you have problems
  1934. consult your local network guru.
  1935.  
  1936. Note the bibliographies exist in a data compressed binary form.  Use the Unix
  1937. uncompress(1) command to decode them.  Not on a Unix system?  Tough for the
  1938. time being.  Try to find one.  The further format of individual entries is Unix
  1939. refer format (a sample, see the two references above).  This is how Singh has
  1940. them, and also how my bibliography is stored.  Refer has lots of advantages
  1941. over other systems: free-format, widely available on Unix systems, uses a
  1942. minimum of space, ASCII, fully machine and human readable (it separates the
  1943. binary data from the text), fairly easy to learn, easily converted to other
  1944. formats (like [bib]TeX, Scribe, etc.)
  1945.  
  1946. Start script
  1947.   eos % ftp gatekeeper.dec.com
  1948.         ^^^^^^^^^^^^^^^^^^^^^^ issue this command, after some time you get:
  1949.   Connected to gatekeeper.dec.com.
  1950.   220 gatekeeper.dec.com FTP server (Version 4.28
  1951.   Name (gatekeeper.dec.com:######): anonymous
  1952.                                     ^^^^^^^^^ use this name
  1953.   331 Guest login ok, send ident as password.
  1954.   Password:
  1955.            ^^^^^^^^ does not echo, I typed "guest," doesn't matter
  1956.   230 Guest login ok, access restrictions apply.
  1957.   ftp> cd pub/graf-bib
  1958.        ^^^^^^^^^^^^^^^ change directory to pub/graf-bib
  1959.   200 CWD command okay.
  1960.   ftp> binary
  1961.        ^^^^^^  very important, you are getting compressed binary files
  1962.   200 Type set to I.
  1963.   ftp> ls
  1964.        ^^ optional  just to should you what you are getting ('dir' is okay, too)
  1965.   200 PORT command okay.
  1966.   150 Opening data connection for /bin/ls (128.102.21.2,1118) (0 bytes).
  1967.   bib85.Z
  1968.   bib86.Z
  1969.   226 Transfer complete.
  1970.   ^^^^^^^ those two filenames are what you want!
  1971.   18 bytes received in 0.2 seconds (0.09 Kbytes/s)
  1972.   ftp> mget *
  1973.        ^^^^^^ asks for all (star) files
  1974.   mget bib85.Z?
  1975.   mget bib86.Z?
  1976.                 ^ you type "y <cr>" or "n <cr>" if you want them.
  1977.                 NOTE: THIS WILL TAKE SOME TIME.
  1978.   ftp> quit
  1979.        ^^^^  done
  1980.   221 Goodbye.
  1981.   eos % # Now you can uncompress bib85.Z, etc.
  1982. end script
  1983.  
  1984. If you don't have a network guru, send mail to siggraph, not the poster of this
  1985. note below.  (Illiterates will type "reply" or "follow-up" to news.  Sorry, I'm
  1986. very tired of this. That's why I'm doing this.)  Big thanks are due to Brian
  1987. Reid and Jamie Painter (at DEC for this work).  Rick Beach okay'ed ACM
  1988. copyrights.  This is not for profit.  Please ACK the above people and
  1989. organizations (in particular, Baldev) when citing.  As I hope you can tell, we
  1990. are really trying to advance the state of the art in computer graphics.  This
  1991. should benefit experts as well as students alike.  It also shows the use of
  1992. technologies other than graphics to our (graphics) benefit.
  1993.  
  1994. --------
  1995.  
  1996. Subject: A little announcement (part 2 of 3)
  1997.  
  1998. I described the advantages of searching and reformatting.  I described
  1999. anonymous FTP.  This is the way to go if you are a major Internet site like
  2000. most universities.  The problem is: what about more casual users, poor people
  2001. with small disks?  Well, the files reside of DEC's disk.  Just LEAVE THEM
  2002. THERE.  Let Bay Area ACM/SIGGRAPH and Singh maintain them.  Then how do you
  2003. access it?  By electronic mail.
  2004.  
  2005. A similar system exists at the Argonne National Labs (and AT&T Bell Labs):
  2006. netlib numerical software distribution [CACM ref. if you need it].  A similar
  2007. set up for benchmarks exists at the NBS (See latest IEEE Computer).  Why not do
  2008. this for graphics references?
  2009.  
  2010. With a generous donation of cycles and disk space from the Digital Equipment
  2011. Corporation (DEC) and some software from CSIL at Stanford we have done just
  2012. this.
  2013.  
  2014. THERE ARE TWO DANGERS inherent: The bibliography is kind of big.  The second
  2015. danger is everybody copying at the same time.
  2016.  
  2017. The DEC host which you be copying from is DEC's gateway to the Internet.  It
  2018. will be a tragedy to abuse this gateway if every site tried to copy at once.
  2019. So let's not abuse this, let's be patient and take our turns.
  2020.  
  2021. 1) retrieve references only during the weekends or evenings Pacific Daylight or
  2022. Standard time.
  2023.  
  2024. 2) copy on a randomly determined evening of the week.  How?  Flip a coin 3
  2025. times (say THT make Head == 0, Tails == 1, this translates to 101 binary or 5
  2026. base 10). Using Sunday as 1, make Thursday 5, copy Thursday evening P[SD]T.
  2027. (HHH or 000, retry).  If this is confusing, wait for the weekend. AGAIN copy
  2028. only in the evenings.
  2029.  
  2030. Where, okay here goes the dangerous information:
  2031.     send mail to:
  2032.     graf-bib-server@decwrl.dec.com
  2033. This can also be
  2034.     {your favorite UUCP path}!decwrl!graf-bib-server
  2035. or if you work for DEC and have ENET access:
  2036.     DECWRL::graf-bib-server
  2037.  
  2038. Your mailer should ask for a "Subject:" field.  This is important.  If your
  2039. mailer doesn't (and lots don't) ask your system folk about mailrc file or
  2040. mh_profiles or how to invoke this field.  Because you should place the keywords
  2041. in that subject field.  One special keyword is "help."  You get a short little
  2042. description.  Make the first alphanumeric (don't give "years").  Additional
  2043. keywords are conjective (and's) causing a smaller and smaller search.  The
  2044. contents aren't perfect, but give us time.
  2045.  
  2046. Your mail is answered by the server daemon.  It searches and tries to find
  2047. relevant cited keywords (up to 6 significant first characters.  Choose
  2048. carefully.  Don't ask for all references with "computer graphics."  Hope you
  2049. understand why.  Just try "help" as your first keyword unless you know what you
  2050. are looking for.  The information comes back in the aforementioned (yesterday)
  2051. refer format.
  2052.  
  2053. If you don't have a network guru, send mail to siggraph, not the poster of this
  2054. note below.  (Illiterates will type "reply" or "follow-up" to news.  Sorry, I'm
  2055. very tired of this. That's why I'm doing this.)  Big thanks are due to Brian
  2056. Reid and Jamie Painter (at DEC for this work).  Rick Beach okay'ed ACM
  2057. copyrights.  This is not for profit.  Please ACK the above people and
  2058. organizations (in particular, Baldev) when citing.  As I hope you can tell, we
  2059. are really trying to advance the state of the art in computer graphics.  This
  2060. should benefit experts as well as students alike.  It also shows the use of
  2061. technologies other than graphics to our (graphics) benefit.
  2062.  
  2063. Our last note will concern one more way of getting references: just asking for
  2064. a floppy (low tech).  We in the Bay Area ACM/SIGGRAPH local group will be
  2065. adding to these.  Reference contributions and corrections are welcome.  It's
  2066. only possible if we work together to see this through.
  2067.  
  2068. --------
  2069.  
  2070. From: eugene@eos.UUCP (Eugene Miya)
  2071. Subject: Re: bib notation question
  2072.  
  2073. In article <3384@pt.cs.cmu.edu> pkh@vap.vi.ri.cmu.edu (Ping Kang Hsiung) writes:
  2074. >I got Eugene Miya's bib files over the weekend. There are some
  2075. >notations used in the files that I don't understand:
  2076. >
  2077. >1. Some \(em or (em  in the %J field. What these mean?
  2078. >(and why they don't have the closing ")".)
  2079. >
  2080. >2. In the key field, there are some numbers:
  2081. >    %K I3m educational computing
  2082. >    %K I3m mechanical engineering computing
  2083. >    %K I35 modeling systems
  2084. >How do I interpret/use these I3m, I35 numbers?
  2085. >
  2086. >3. Some acronyms: CGF, CAMP, ISATA. They are not defined in the files.
  2087.  
  2088. Oops!  Sorry. I got other mail on this.  I forgot all about them.  The
  2089. BACKSLASH macros are troff-isms.  There are tools like deroff to take them out
  2090. or r2bib to convert things into bibTeX.  These macros are 4 characters in size
  2091. \(em is a slightly longer dash.  They aren't a significant problem, write sed
  2092. filter.
  2093.  
  2094. The I fields are ACM Classification codes.  You can either get them from ACM
  2095. Computing Reviews (blue and white things, that most don't get) or you can get
  2096. the hardcopy versions of these bibliographies (they have the CR classification
  2097. scheme for graphics).
  2098.  
  2099. The acronyms are unfortunately a long term problems.  We can get a table to use
  2100. use U. AZ's bib program to fill them out.
  2101.  
  2102. I hope you are all finding some use of this stuff.  We NEED people around the
  2103. country to help us update this.  There are earlier years.  Also new papers are
  2104. being written all the time.  They have to get entered (even finding them is
  2105. hard).  I don't deserve the credit, I'm only pissed off that I have to read
  2106. queries over and over.  The credit belongs to the crew of Bay Area ACM/SIGGRAPH
  2107. working on this project. (other volunteers are welcome: especially key entry
  2108. help)
  2109.  
  2110. Another gross generalization from
  2111.  
  2112. --eugene miya, NASA Ames Research Center, eugene@aurora.arc.nasa.gov
  2113.   ex-Lame-duck Prez. Bay Area ACM/SIGGRAPH
  2114.   resident cynic at the Rock of Ages Home for Retired Hackers:
  2115.   "Mailers?! HA!", "If my mail does not reach you, please accept my apology."
  2116.   {uunet,hplabs,ncar,decwrl,allegra,tektronix}!ames!aurora!eugene
  2117.   "Send mail, avoid follow-ups.  If enough, I'll summarize."
  2118.  
  2119. -----------------------------------------------------------------------------
  2120.  
  2121. Here is the short form of the present mailing list, showing just email paths
  2122. from an ARPA node.  If you want the full list, which includes additional info
  2123. and snail mail addresses, drop me a note - Eric Haines
  2124.  
  2125. alias    jim_arvo        apollo!arvo@eddie.mit.edu
  2126. alias    al_barr            barr@csvax.caltech.edu
  2127. alias    brian_barsky        barsky@miro.berkeley.edu
  2128. alias    daniel_bass        daniel@apollo.com
  2129. alias    rod_bogart        bogart%gr@cs.utah.edu
  2130. alias    wim_bronsvoort        dutrun!wim@mcvax.cwi.nl
  2131. alias    at_campbell         atc@cs.utexas.EDU
  2132. alias    john_chapman        fornax!sfu-cmpt!chapman@cornell.uucp
  2133. alias    chuan_chee        ckchee@dgp.toronto.edu
  2134. alias    michael_cohen        m-cohen@cs.utah.edu
  2135. alias    jim_ferwerda        jaf@squid.tn.cornell.edu
  2136. alias    fred_fisher        FISHER%3D.dec@decwrl.dec.com
  2137. alias    john_francis        apollo!johnf@eddie.mit.edu
  2138. alias    phil_getto        phil@yy.cicg.rpi.edu
  2139. alias    andrew_glassner        glassner@xerox.com
  2140. alias    jeff_goldsmith        jeff@hamlet.caltech.edu
  2141. alias    chuck_grant        grant@icdc.llnl.gov
  2142. alias    paul_haeberli        sgi!paul@pyramid.pyramid.com
  2143. alias    eric_haines        hpfcla!hpfcrs!eye!erich@hplabs.HP.COM
  2144. alias    roy_hall        roy@wisdom.tn.cornell.edu
  2145. alias    pat_hanrahan        pixar!pat@ucbvax.berkeley.edu
  2146. alias    paul_heckbert        ph@miro.berkeley.edu
  2147. alias    michael_hohmeyer    hohmeyer@miro.berkeley.edu
  2148. alias    jeff_hultquist        hultquis@prandtl.nas.nasa.gov
  2149. alias    erik_jansen        dutio!fwj@mcvax.cwi.nl
  2150. alias    ken_joy            joy@ucdavis.edu
  2151. alias    mike_kaplan        dana!mrk@hplabs.hp.com
  2152. alias    tim_kay            tim@csvax.caltech.edu
  2153. alias    dave_kirk        dk@csvax.caltech.edu
  2154. alias    roman_kuchkuda        megatek!kuchkuda@ucsd.ucsd.edu
  2155. alias    george_kyriazis        kyriazis@turing.cs.rpi.edu
  2156. alias    david_lister        lister@dg-rtp.dg.com
  2157. alias    pete_litwinowicz    litwinow@apple.com
  2158. alias    gray_lorig        gray%rhea.CRAY.COM@uc.msc.umn.edu
  2159. alias    wayne_lytle        wtl@cockle.tn.cornell.edu
  2160. alias    tom_malley        esunix!tmalley@cs.utah.edu
  2161. alias    don_marsh        dmarsh@apple.apple.com
  2162. alias    michael_natkin        mjn@cs.brown.edu
  2163. alias    tim_oconnor        toc@wisdom.tn.cornell.edu
  2164. alias    masataka_ohta        mohta%titcce.cc.titech.junet%utokyo-relay.csnet@RELAY.CS.NET
  2165. alias    tom_palmer        palmer@ncifcrf.gov
  2166. alias    darwyn_peachey        pixar!peachey@ucbvax.berkeley.edu
  2167. alias    john_peterson        jp@apple.apple.com
  2168. alias    frits_post        dutrun!frits@mcvax.cwi.nl
  2169. alias    pierre_poulin        poulin@dgp.toronto.edu
  2170. alias    thierry_priol        inria!irisa!priol@mcvax.cwi.nl
  2171. alias    panu_rekola        pre@cs.hut.fi
  2172. alias    david_rogers        dfr@cad.usna.mil
  2173. alias    linda_roy        lroy@sgi.com
  2174. alias    cary_scofield        apollo!scofield@eddie.mit.edu
  2175. alias    pete_segal        pls%pixels@research.att.com
  2176. alias    scott_senften        apctrc!bigmac!senften@cornell.uucp
  2177. alias    cliff_shaffer        shaffer@vtopus.cs.vt.edu
  2178. alias    susan_spach        spach@hplabs.hp.com
  2179. alias    rick_speer        speer@ucbvax.berkeley.edu
  2180. alias    stephen_spencer        spencer@tut.cis.ohio-state.edu
  2181. alias    steve_stepoway        stepoway@smu.edu
  2182. alias    mike_stevens        apctrc!zfms0a@cornell.uucp
  2183. alias    paul_strauss        pss@cs.brown.edu
  2184. alias    kr_subramanian        subramn@cs.utexas.edu
  2185. alias    kelvin_thompson        kelvin@cs.utexas.edu
  2186. alias    russ_tuck        tuck@cs.unc.edu
  2187. alias    greg_turk        turk@cs.unc.edu
  2188. alias    ben_trumbore        wbt@cockle.tn.cornell.edu
  2189. alias    mark_vandewettering    markv@cs.uoregon.edu
  2190. alias    jack_van_wijk        ecn!jack@mcvax.cwi.nl
  2191. alias    greg_ward        gjward@lbl.gov
  2192. alias    bob_webber        webber@aramis.rutgers.edu
  2193. alias    lee_westover        westover@cs.unc.edu
  2194. alias    andrew_woo         andreww@dgp.toronto.edu
  2195. -----------------------------------------------------------------------------
  2196. END OF RTNEWS
  2197.